详解通过XmlDocument读写Xml文档的示例代码

互联网 17-3-9
通过XmlDocument读写Xml文档

有如下一段Xml:

<?xml version="1.0" encoding="utf-8" ?>  <students>    <!--我是一段注释文字-->    <student name="张平">      <courses>        <course name="语文?">          <teacherComment>            <![CDATA[          这里是语文老师的批注          ]]>          </teacherComment>            </course>          <course name="数学">          <teacherComment>            <![CDATA[          这里是数学老师的批注          ]]>          </teacherComment>        </course>      </courses>    </student>  </students>

1.如何使用XmlDocument读取Xml

我要用一段代码遍历所有Student,并打印Student的所有属性和子节点的值

/*玉开博客 http://www.php.cn/ */  using System;  using System.Collections.Generic;  using System.Text;  using System.Xml;    namespace XmlExample  {      class Program      {          static void Main(string[] args)          {              string xmlFilePath = @"X:\about.net\example\XmlExample\1.xml";              XmlDocument doc = new XmlDocument();              doc.Load(xmlFilePath);                //使用xpath表达式选择文档中所有的student子节点              XmlNodeList studentNodeList = doc.SelectNodes("/students/student");              if (studentNodeList != null)              {                  foreach (XmlNode studentNode in studentNodeList)                  {                      //通过Attributes获得属性名字为name的属性                      string name = studentNode.Attributes["name"].Value;                      Console.WriteLine("Student:" + name);                        //通过SelectSingleNode方法获得当前节点下的courses子节点                      XmlNode coursesNode = studentNode.SelectSingleNode("courses");                        //通过ChildNodes属性获得courseNode的所有一级子节点                      XmlNodeList courseNodeList = coursesNode.ChildNodes;                      if (courseNodeList != null)                      {                          foreach (XmlNode courseNode in courseNodeList)                          {                              Console.Write("\t");                              Console.Write(courseNode.Attributes["name"].Value);                              Console.Write("老师评语");                              //通过FirstNode属性可以获得课程节点的第一个子节点,LastNode可以获得最后一个子节点                              XmlNode teacherCommentNode = courseNode.FirstChild;                              //读取CData节点                              XmlCDataSection cdata = (XmlCDataSection)teacherCommentNode.FirstChild;                              Console.WriteLine(cdata.InnerText.Trim());                          }                      }                  }              }                Console.Write("\r\nPress any key to continue....");              Console.Read();          }      }  }

XmlDocument本身是从XmlNode继承的,读Xml节点可以通过FirstChild,LastChild,或者NextSibling,PreviousSibling读取单个节点,或者通过ChildNodes读取所有子节点。还可以使用XPath表达式使用SelectNodes(string xpath)或者SelectSingleNode(string xpath)读取单个或者多个符合条件的节点。

2.如何通过XmlDocument编辑Xml

同样是读取Xml中的xml例子,我们这次要用csharp代码生成xml,如下代码:

/*玉开博客 http://www.php.cn/ */  using System;  using System.Collections.Generic;  using System.Text;  using System.Xml;    namespace WriteXml  {      class Program      {          static void Main(string[] args)          {              XmlDocument xmlDoc = new XmlDocument();              //创建Xml声明部分,即<?xml version="1.0" encoding="utf-8" ?>              xmlDoc.CreateXmlDeclaration("1.0", "utf-8", "yes");                //创建根节点              XmlNode rootNode = xmlDoc.CreateElement("students");                //创建student子节点              XmlNode studentNode = xmlDoc.CreateElement("student");              //创建一个属性              XmlAttribute nameAttribute = xmlDoc.CreateAttribute("name");              nameAttribute .Value = "张同学";              //xml节点附件属性              studentNode.Attributes.Append(nameAttribute);                             //创建courses子节点              XmlNode coursesNode = xmlDoc.CreateElement("courses");              XmlNode courseNode1 = xmlDoc.CreateElement("course");              XmlAttribute courseNameAttr = xmlDoc.CreateAttribute("name");              courseNameAttr.Value = "语文";              courseNode1.Attributes.Append(courseNameAttr);              XmlNode teacherCommentNode = xmlDoc.CreateElement("teacherComment");              //创建Cdata块              XmlCDataSection cdata = xmlDoc.CreateCDataSection("<font color=\"red\">这是语文老师的批注</font>");              teacherCommentNode.AppendChild(cdata);              courseNode1.AppendChild(teacherCommentNode);              coursesNode.AppendChild(courseNode1);              //附加子节点              studentNode.AppendChild(coursesNode);                rootNode.AppendChild(studentNode);              //附加根节点              xmlDoc.AppendChild(rootNode);                //保存Xml文档              xmlDoc.Save(@"d:\test.xml");                Console.WriteLine("已保存Xml文档");              }      }  }

使用XmlDocument生成xml的要点在于使用xmlDocument的实例的CreateElement创建XmlNode或者通过CreateAttribute方法创建属性,并通过AppendChild方法附加xml节点,通过AppendAttribute附加Attribute到节点的属性集合。

以上就是详解通过XmlDocument读写Xml文档的示例代码的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:详细介绍使用XmlWriter写Xml的示例代码

相关资讯