• 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类

     

  • 相关阅读:
    【算法微解读】浅谈01分数规划
    【算法微解读】浅谈线段树
    近期目标
    【洛谷P5008 逛庭院】tarjan缩点+贪心
    【洛谷P1061 Jam的计数法】搜索
    【洛谷P1140 相似基因】动态规划
    【建兰普及模拟赛四】20181026
    【建兰普及模拟赛第三场】20181035
    【洛谷P2800又上锁妖塔】动态规划
    【建兰普及模拟赛第二场】20181024
  • 原文地址:https://www.cnblogs.com/netlzl/p/4343074.html
Copyright © 2020-2023  润新知