• C# XML解析之DOM模型


    DOM的工作方式是:首先将XML文档一次性的装入内存,然后根据文档中定义的元素和属性在内存中创建一个“树型结构”也就是一个文档对象模型,这里的含义其实是把文档对象化,文档中每个节点对应着模型中一个对象,而我们都知道对象提供编程接口,所以在Application中我们正是使用这组对象来访问XML文档进而操作XML文档。

    下图阐述了Application和DOM交互的过程:

     

    DOM在内存中创建树模型:

     XML文档片段个:

    <parent>

    <child id="123">text here</child>

    </parent>

        内存中的树结构如下图:

     C#处理DOM的主要步骤:

    1.声明XmlDocument对象并装载XML文件或片段;

    Xmldocument doc=new Xmldocument(); //不要忘记导入System.Xml

    doc.load("test.xml");//装载xml文件

    //doc.loadXml("<book>abc</book>");转载xml片段

    2.声明XmlElement变量对象并用doc.DocumentElement来赋值(得到XML文件的根元素不是根节点)

    XmlElement root=doc.DocumentElement();

    3.查找结点再进行相应的操作:

    1)查找单个节点:一种方法:用Get系列方法,如GetFirstChild();另一种方法是SelectSingleNode("相应的XPath字符串");

    2)查找节点集有两个对象XmlNodelist和XmlNamedNodeMap,前者用得比较多,后者用于处理无序节点集处理XML片段。

    //方法一

    //XmlNodeList el=n.ChildNodes; 得到n的所有子节点集

    //方法二

    //XmlNodeList el=n.SelectNodes("book"); 得到节点名为book的节点集

    //方法三

    //XmlElement rootEle=doc.DocumentElement;

    //XmlNodeList el=rootEle.GetElementsByTagName("book");

    //方法四

    //XmlNodeList el=doc.GetElementsByTagName("book");

    4.创建新节点主要步骤:

    1) 用XmlDocument对象并用XML填充其

    2) 确定要插入的位置并定位到此位置

    3) 创建节点(其实也可为:Element、Attribute、Text、Comment、CDATA或Processing &Instruction)

    4) 再在XmlDocment对象中添加节点

    (注意:添加节点只有三种方法而已。AppendChild()、InsertBefore()还有InsertAfter();)

    (一):创建元素节点

    XmlElement elem=doc.CreateElement("price");

    XmlElement(对象).InnerText();

    XmlNode(对象).CreateTextNode();

    (二):为元素节点设置属性

    SetAttribute()此方法是有则改,无则创.

    (三):创建其他类型的节点

    XmlDocument.CreateComment()方法进行注释节点

    XmlDocument.CreateCDataSection()

    XmlDocument.CreateProcessingInstruction()

    5.修改和删除节点

     ReplaceChild();

    SetAttribute();

    RemoveChild();

    RemoveAttribute();

    RemoveAll();

    6.保存XML文档

    xmlDocument.Save( XMLFileName );

    两个重要类:XmlNode类和XmlDocument类

     

  • 相关阅读:
    【RL-TCPnet网络教程】第3章 初学RL-TCPnet的准备工作及其快速上手
    【二代示波器教程】第15章 FreeRTOS操作系统版本二代示波器实现
    【RL-TCPnet网络教程】第2章 嵌入式网络协议栈基础知识
    【二代示波器教程】第14章 uCOS-III操作系统版本二代示波器实现
    【RL-TCPnet网络教程】第1章 当前主流的小型嵌入式网络协议栈
    徐州网络赛H-Ryuji doesn't want to study【线段树】
    徐州网络赛F-Feature Trace【暴力】
    徐州网络赛C-Cacti Lottery【DFS】
    南京网络赛I-Skr【回文树模板】
    AC自动机
  • 原文地址:https://www.cnblogs.com/netlzl/p/4343074.html
Copyright © 2020-2023  润新知