欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C# 写入XML文档三种方法详细介绍

程序员文章站 2023-12-10 22:32:34
我在以前的博客中介绍了如何使用xmldocument类对xml进行操作,以及如何使用linq to xml对xml进行操作。它们分别使用了xmldocument类和xdoc...
我在以前的博客中介绍了如何使用xmldocument类对xml进行操作,以及如何使用linq to xml对xml进行操作。它们分别使用了xmldocument类和xdocument类。在本文中,我再介绍一个类,xmltextwriter。我们分别用这三个类将同样的xml内容写入文档,看一看哪种写法最直观、简便。
我们要写入的xml文档内容为
复制代码 代码如下:

<?xml version="1.0" encoding="utf-8"?>
<contacts>
<contact id="01">
<name>daisy abbey</name>
<gender>female</gender>
</contact>
</contacts>

(1)使用xmldocument类
复制代码 代码如下:

var xmldoc = new xmldocument();
//create the xml declaration first
xmldoc.appendchild(xmldoc.createxmldeclaration("1.0", "utf-8", null));
//create the root node and append into doc
var el = xmldoc.createelement("contacts");
xmldoc.appendchild(el);
// contact
xmlelement elementcontact = xmldoc.createelement("contact");
xmlattribute attrid = xmldoc.createattribute("id");
attrid.value = "01";
elementcontact.attributes.append(attrid);
el.appendchild(elementcontact);
// contact name
xmlelement elementname = xmldoc.createelement("name");
elementname.innertext = "daisy abbey";
elementcontact.appendchild(elementname);
// contact gender
xmlelement elementgender = xmldoc.createelement("gender");
elementgender.innertext = "female";
elementcontact.appendchild(elementgender);
xmldoc.save("test1.xml");

(2)使用linq to xml 的xdocument类
复制代码 代码如下:

var doc = new xdocument(
new xelement("contacts",
new xelement("contact",
new xattribute("id", "01"),
new xelement("name", "daisy abbey"),
new xelement("gender", "female")
)
)
);
doc.save("test2.xml");

(3) 使用xmltextwriter类
复制代码 代码如下:

string filename = string.concat("test3.xml");
using (streamwriter sw = new streamwriter(filename))
{
// create xml writer.
xmltextwriter xmlwriter = new xmltextwriter(sw);
// 也可以使用public xmltextwriter(string filename, encoding encoding)来构造
// encoding默认为 utf-8.
//xmltextwriter writer = new xmltextwriter("test3.xml", null);
// set indenting so that its easier to read xml when open in notepad and such apps.
xmlwriter.formatting = formatting.indented;
// this will output the xml declaration
xmlwriter.writestartdocument();
xmlwriter.writestartelement("contacts");
xmlwriter.writestartelement("contact");
xmlwriter.writeattributestring("id", "01");
xmlwriter.writeelementstring("name", "daisy abbey");
xmlwriter.writeelementstring("gender", "female");
// close contact </contact>
xmlwriter.writeendelement();
// close contacts </contact>
xmlwriter.writeendelement();
xmlwriter.writeenddocument();
xmlwriter.close();
}

从上面的代码基本上还是可以看出来,使用linq to xml是最简便的。