您好,欢迎访问一九零五行业门户网

.net读写xml文档详解

这篇文章主要介绍了.net读写xml文档的示例,需要的朋友可以参考下
一  .net框架中与xml有关的命名空间
system.xml
包含了一些和xml文档的读写操作相关的类,它们分别是:xmlreader、xmltextreader、xmlvalidatingreader、xmlnodereader、xmlwriter、xmltextwriter 以及 xmlnode(它的子类包括:xmldocument、xmldatadocument、xmldocumentfragment)等类。
system.xml.schema
包含了和xml模式相关的类,这些类包括xmlschema、xmlschemaall、xmlschemaxpath以及xmlschematype等类。
system.xml.serialization
包含了和xml文档的序列化和反序列化操作相关的类。
序列化:将xml格式的数据转化为流格式的数据,并能在网络中传输;
反序列化:完成相反的操作,即将流格式的数据还原成xml格式的数据。
system.xml.xpath
包含了xpathdocument、xpathexression、xpathnavigator以及xpathnodeiterator等类,这些类能完成xml文档的导航功能。
(在xpathdocument类的协助下,xpathnavigator类能完成快速的xml文档导航功能,该类为程序员提供了许多move方法以完成导航功能。)
system.xml.xsl
完成xslt的转换功能。
二  写xml文档的方法
用xmlwriter类实现写操作,该类包含了写xml文档所需的方法和属性,它是xmltextwriter类和xmlnodewriter类的基类。
写操作的有些方法是成对出现的,比如你要写入一个元素,首先调用writestartelement方法—>写入实际内容—>调用writeendelement方法结束。
下面通过其子类 xmltextwriter 来说明如何写xml文档。
xmltextwriter textwriter = new xmltextwriter(c:\\myxmfile.xml, null);
在创建完对象后,我们调用writerstartdocument方法开始写xml文档;
在完成写工作后,就调用writeenddocument结束写过程,并调用close方法将它关闭。
在写的过程中,我们可以:
调用writecomment方法来添加说明;
通过调用writestring方法来添加一个字符串;
通过调用writestartelement和writeendelement方法对来添加一个元素;
通过调用writestartattribute和writeendattribute方法对来添加一个属性;
通过调用writenode方法来添加整的一个节点;
其它的写的方法还包括writeprocessinginstruction和writedoctype等等。
下面的示例介绍如何具体运用这些方法来完成xml文档的写工作。
代码如下:
using system; using system.xml; namespace writexml { class class1 { static void main( string[] args ) { try { // 创建xmltextwriter类的实例对象 xmltextwriter textwriter = new xmltextwriter("c:\\w3sky.xml", null); textwriter.formatting = formatting.indented; // 开始写过程,调用writestartdocument方法 textwriter.writestartdocument(); // 写入说明 textwriter.writecomment("first comment xmltextwriter sample example"); textwriter.writecomment("w3sky.xml in root dir"); //创建一个节点 textwriter.writestartelement("administrator"); textwriter.writeelementstring("name", "formble"); textwriter.writeelementstring("site", "w3sky.com"); textwriter.writeendelement(); // 写文档结束,调用writeenddocument方法 textwriter.writeenddocument(); // 关闭textwriter textwriter.close(); } catch(system.exception e) { console.writeline(e.tostring()); } } } }
三 读xml文档的方法
用xmltextreader类的对象来读取该xml文档。在创建新对象的构造函数中指明xml文件的位置即可。
xmltextreader textreader = new xmltextreader("c:\\books.xml");
xmltextreader 类中的属性 nodetype 可以知道其节点的节点类型。通过与枚举类型 xmlnodetype 中的元素的比较,可以获取相应节点的节点类型并对其完成相关的操作。
枚举类型 xmlnodetype 中包含了诸如xmldeclaration、attribute、cdata、element、comment、document、documenttype、entity、processinstruction以及whitespace等xml项的类型。
下面的示例是以读取"books.xml"文件创建对象,通过该xml对象的name、baseuri、depth、linenumber等属性来获取相关信息,并显示在控制台中。(运用vs.net开发工具附带的"books.xml"文件来作为示例)
代码如下:
using system; using system.xml; namespace readxml { class class1 { static void main( string[] args ) { // 创建一个xmltextreader类的对象并调用read方法来读取xml文件 xmltextreader textreader = new xmltextreader("c:\\books.xml"); textreader.read(); // 节点非空则执行循环体 while ( textreader.read() ) { // 读取第一个元素 textreader.movetoelement(); console.writeline("xmltextreader properties test"); console.writeline("==================="); // 读取该元素的属性并显示在控制台中 console.writeline("name:" + textreader.name); console.writeline("base uri:" + textreader.baseuri); console.writeline("local name:" + textreader.localname); console.writeline("attribute count:" + textreader.attributecount.tostring()); console.writeline("depth:" + textreader.depth.tostring()); console.writeline("line number:" + textreader.linenumber.tostring()); console.writeline("node type:" + textreader.nodetype.tostring()); console.writeline("attribute count:" + textreader.value.tostring()); } } } }
四 运用xmldocument类
xmldocument类代表了xml文档,它能完成与整个xml文档相关的各类操作,同时和其相关的xmldatadocument类也是非常重要的,值得深入研究。 该类包含了load、loadxml以及save等重要的方法。
load方法: 可以从一个字符串指定的xml文件或是一个流对象、一个textreader对象、一个xmlreader对象导入xml数据。
loadxml方法: 则完成从一个特定的xml文件导入xml数据的功能。
save方法: 则将xml数据保存到一个xml文件中或是一个流对象、一个textwriter对象、一个xmlwriter对象中。
下面的示例中,用到了xmldocument类对象的loadxml方法,它从一个xml文档段中读取xml数据并调用其save方法将数据保存在一个文件中。
代码如下:
// 创建一个xmldocument类的对象 xmldocument doc = new xmldocument(); doc.loadxml(("<student type='regular' section='b'><name>tommy lex</name></student>")); // 保存到文件中 doc.save("c:\\student.xml"); // 还可以通过改变save方法中参数,将xml数据显示在控制台中,方法如下: doc.save(console.out); 下面的示例中,用到了一个xmltextreader对象,通过它读取"books.xml"文件中的xml数据。然后创建一个xmldocument对象并载入xmltextreader对象,这样xml数据就被读到xmldocument对象中了。最后,通过该对象的save方法将xml数据显示在控制台中。 xmldocument doc = new xmldocument(); // 创建一个xmltextreader对象,读取xml数据 xmltextreader reader = new xmltextreader("c:\\books.xml"); reader.read(); // 载入xmltextreader类的对象 doc.load(reader); // 将xml数据显示在控制台中 doc.save(console.out);
xml文件
代码如下:
<?xml version='1.0'?> <!-- this file represents a fragment of a book store inventory database --> <bookstore> <book genre="autobiography" publicationdate="1981" isbn="1-861003-11-0"> <title>the autobiography of benjamin franklin</title> <author> <first-name>benjamin</first-name> <last-name>franklin</last-name> </author> <price>8.99</price> </book> <book genre="novel" publicationdate="1967" isbn="0-201-63361-2"> <title>the confidence man</title> <author> <first-name>herman</first-name> <last-name>melville</last-name> </author> <price>11.99</price> </book> <book genre="philosophy" publicationdate="1991" isbn="1-861001-57-6"> <title>the gorgias</title> <author> <first-name>sidas</first-name> <last-name>plato</last-name> </author> <price>9.99</price> </book> </bookstore>
另外一个.net操作xml文件示例
代码如下:
//设置配置文件物理路径 public string xmlpath = "/manage/spider/config.xml"; protected void page_load(object sender, eventargs e) { if (!ispostback) { //设置程序物理路径+文件物理路径 string path = request.physicalapplicationpath + xmlpath; //获取xml元素对象 xelement config = xelement.load(path); if (config != null) { //获得节点子元素 xelement eleamazondetailurl = config.element("amazondetailurl"); xelement eleamazonlisturl = config.element("amazonlisturl"); xelement elehz = config.element("hz"); xelement elecount = config.element("count"); //在页面上呈现取到的数据 if (eleamazondetailurl != null) textbox_amazondetailurl.text = eleamazondetailurl.value; if (eleamazonlisturl != null) textbox_amazonlisturl.text = eleamazonlisturl.value; if (elehz != null) textbox_hz.text = elehz.value; if (elecount != null) textbox_count.text = elecount.value; } else response.write(""); } } protected void btn_save_click(object sender, eventargs e) { //设置xml文件路径 string path = request.physicalapplicationpath + xmlpath; //设置节点的名称和内容 xelement root = new xelement("settings", new xelement("amazondetailurl", textbox_amazondetailurl.text.trim()), new xelement("amazonlisturl", textbox_amazonlisturl.text.trim()), new xelement("hz", textbox_hz.text.trim()), new xelement("count", textbox_count.text.trim()) ); //将元素序列化到指定路径的xml文件当中 root.save(path); }
以上就是.net读写xml文档详解的详细内容。
其它类似信息

推荐信息