一、用DOM的方式去创建XML
上一篇讲了如何用DMO的方式读一个XML,这一片就见一下如何用DOM的方式写一个XML。不过,用DOM写XML本身并不是一个好主意,因为DOM方式本身的废话就超多,做一个简单的事情就需要好几句语句,但是作为一个基本的方式还是有必要了解一下。
1. 创建无Namespace的XML
a. 如果先写出这样一个XML:
<?xml version="1.0" encoding="UTF-8"?> <persons> <person> <firstName>Wang</firstName> <lastName>Joe</lastName> <address>http://www.baidu.com</address> </person> </persons>
需要这样一大段代码:
//创建XML XmlDocument doc = new XmlDocument(); XmlElement persons = doc.CreateElement("persons"); doc.AppendChild(persons); XmlElement person = doc.CreateElement("person"); persons.AppendChild(person); XmlElement firstName = doc.CreateElement("firstName"); person.AppendChild(firstName); firstName.InnerText = "Wang"; XmlElement lastName = doc.CreateElement("lastName"); person.AppendChild(lastName); lastName.InnerText = "Joe"; XmlElement address = doc.CreateElement("address"); person.AppendChild(address); address.InnerText = "http://wwww.baidu.com"; //打印结果 using (XmlWriter writer = XmlWriter.Create(Console.Out)) { doc.WriteTo(writer); }
分析一下,在DOM方式下创建任何一个XML节点都必须使用XmlDocument的对应的Create方法创建,然后再添加到对应位置,这就是DOM方式最麻烦的地方。
看看运行结果:
<?xml version="1.0" encoding="gb2312"?><persons><person><firstName>Wang</firstName><lastName>Joe</lastName><address>http://wwww.baidu.com</address></person></persons>
这个XML因为未被格式化很难读,那么怎么才能得到格式化的XML呢?
b. 格式化
添加以下代码,就可以得到格式化好的XML了:
XmlWriterSettings settings = new XmlWriterSettings(); settings.Indent = true; //缩进 using (XmlWriter writer = XmlWriter.Create(Console.Out, settings)) { doc.WriteTo(writer); }
2. 创建有Namespace的XML
如果想要创建有namespace的XML,怎么办呢?
很简单,换一个重载就可以了,在创建节点的时候用带有namespace的重载就可以了。
XmlDocument doc = new XmlDocument(); const string ns = "namespace"; XmlElement persons = doc.CreateElement("v", "persons", ns); doc.AppendChild(persons); XmlElement person = doc.CreateElement("v", "person", ns); persons.AppendChild(person); XmlElement firstName = doc.CreateElement("v", "firstName", ns); person.AppendChild(firstName); firstName.InnerText = "Wang"; XmlElement lastName = doc.CreateElement("v", "lastName", ns); person.AppendChild(lastName); lastName.InnerText = "Joe"; XmlElement address = doc.CreateElement("v", "address", ns); person.AppendChild(address); address.InnerText = "http://wwww.baidu.com"; XmlWriterSettings settings = new XmlWriterSettings(); settings.Indent = true; using (XmlWriter writer = XmlWriter.Create(Console.Out, settings)) { doc.WriteTo(writer); }
运行就可以得到带有namespce的XML:
<?xml version="1.0" encoding="UTF-8"?> <v:persons xmlns:v="namespace"> <v:person> <v:firstName>Wang</v:firstName> <v:lastName>Joe</v:lastName> <v:address>http://www.baidu.com</v:address> <v:/person> <v:/persons>
二、用DOM的方式去修改XML
时间: 2024-10-09 14:09:56