通过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到节点的属性集合。

更多相关文章

  1. 详细介绍XML中的属性学习方法
  2. XML实例教程:nodeName、nodeValue和nodeType属性的详解
  3. XML入门教程-属性声明代码示例
  4. XML学习(一)元素,属性,读取详解
  5. 详解XML命名空间(XML Namespaces)介绍以及节点读取方法的示例代码
  6. xml创建根节点、子节点的示例代码分享
  7. XML开发基础-XML属性的代码详解
  8. xml的属性总结代码详情
  9. 简单介绍XML Schema中的elementFormDefault属性

随机推荐

  1. Kotlin Anko Layout+MVP(Glide,Retrofit,
  2. APIDEMO GRIDVIEW
  3. Android(安卓)读取内存文件返回byte数组
  4. #AndroidDevSummit,就在此刻!
  5. Android TextView多行文本滚动实现
  6. Android shape 绘制图形的实例详解
  7. Android(安卓)2.2完全退出程序, 使用广播
  8. android 拍照 onCreate() 调用两次的问题
  9. Android 状态栏全透明策略
  10. android Application学习之一