C#操作Xml:通过XmlDocument读写Xml文档

摘要:
[CDATA[这是数学老师的评论]]˃1.如何使用XmlDocument读取Xml。我需要使用一段代码遍历所有学生,并打印学生的所有属性和子节点的值?
什么是Xml?

Xml是扩展标记语言的简写,是一种开发的文本格式。关于它的更多情况可以通过w3组织了解http://www.w3.org/TR/1998/REC-xml-19980210。如果你不知道它,那你就out太多了。
.Net是如何处理Xml的?

1.通过XmlDocument读写Xml文档
2.使用XmlReader读Xml使用XmlWriter写Xml
3.使用Linq to xml存取XML
4.通过XmlScheme定义固定格式xml文档
5.Xml序列化或者反序列化类
6.通过XPath查找Xml节点
7.通过Xslt转化Xml格式
通过XmlDocument读写Xml文档
有如下一段Xml:
<?xmlversion="1.0" encoding="utf-8" ?>
<students>
  <!--我是一段注释文字-->
  <studentname="张平">
    <courses>
      <coursename="语文?">
        <teacherComment>
          <![CDATA[
        这里是语文老师的批注
        ]]>
        </teacherComment>     
    </course>
 
      <coursename="数学">
        <teacherComment>
          <![CDATA[
        这里是数学老师的批注
        ]]>
        </teacherComment>
      </course>
    </courses>
  </student>
</students>
1.如何使用XmlDocument读取Xml

我要用一段代码遍历所有Student,并打印Student的所有属性和子节点的值
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
usingSystem.Xml;
 
namespaceXmlExample
{
    classProgram
    {
        staticvoidMain(string[] args)
        {
            stringxmlFilePath = @"X:about.netexampleXmlExample1.xml";
            XmlDocument doc = newXmlDocument();
            doc.Load(xmlFilePath);
 
            //使用xpath表达式选择文档中所有的student子节点
            XmlNodeList studentNodeList = doc.SelectNodes("/students/student");
            if(studentNodeList != null)
            {
                foreach(XmlNode studentNode instudentNodeList)
                {
                    //通过Attributes获得属性名字为name的属性
                    stringname = 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 incourseNodeList)
                        {
                            Console.Write(" ");
                            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(" Press 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,如下代码:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
usingSystem.Xml;
 
namespaceWriteXml
{
    classProgram
    {
        staticvoidMain(string[] args)
        {
            XmlDocument xmlDoc = newXmlDocument();
            //创建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: est.xml");
 
            Console.WriteLine("已保存Xml文档");
 
 
        }
    }
}

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

免责声明:文章转载自《C#操作Xml:通过XmlDocument读写Xml文档》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇【VBA】打开关闭工作簿等html5表单验证(Bootstrap)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Maven配置阿里镜像库和本地库的方法

Maven配置阿里镜像库 原因: 默认Maven中心仓库下载速度过慢. 配置方式: 在setting.xml文件中增加<mirror></mirror>标签 具体步骤: Step1 查找setting.xml文件(一般位于maven文件夹下的conf目录下);              Step2 在setting.xml...

idea中添加web.xml配置文件与tomcat启动中遇到的web.xml文件找不到的问题

1,如何在idea中向war项目中添加web.xml的配置文件 idea通过maven创建war项目时没有指定是webapp导致创建出来的项目没有webapp的文件夹。其实war项目中都是在"项目名/src/main"目录下 只要在这个项目下创建webapp/WEB-INF/web.xml就行了 2,如果你没有把web.xml放在"项目名/src/main...

[转]如何让Android字体自适应屏幕分辨率

本文转自:http://www.cnblogs.com/tt_mc/archive/2012/03/10/2389555.html 在不同的分辨率下,Android字体大小怎么自适应分辨率的变化? 假设需要适应320x240,480x320分辨率。在res目录下新建文件夹values-320x240,values-480x320。然后在文件夹values...

idea中自定义设置xml的头文件的内容

因为在idea中新建的xml默认的头文件,有时候并不是我们需要的这时候可以通过自定义来解决.如搭建hibernate的实体类的映射xml. 首先 fiel→settings出现 如下框框 在上面搜索 temp 点击 file and code tempplates,之后点击 + 便可以自定文件初始化的内容 我自定义了一个mapper.xml 自定义之...

JS解析XML文件和XML字符串

详细内容请点击 JS解析XML文件 复制代码<script type='text/javascript'>loadXML = function(xmlFile){var xmlDoc=null;//判断浏览器的类型//支持IE浏览器if(!window.DOMParser && window.ActiveXObject){var...

在.xml文件中模糊查询的常用的3种方法

我经常使用的模糊查询的方法是: <!-- ******************** 模糊查询的常用的3种方式:********************* --> <select parameterType="User" resultType="User"> select <include refid...