码迷,mamicode.com
首页 > Windows程序 > 详细

C#操作XML(二)

时间:2015-06-15 12:30:39      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:

一、用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

C#操作XML(二)

标签:

原文地址:http://www.cnblogs.com/sunshineground/p/4576581.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!