zoukankan      html  css  js  c++  java
  • 关于XML的读取,添加,修改,删除

    ----- 转载CSDN,觉得作者写挺好,记录这里当做笔记学习,且对应方法msdn查了一下,添加了注释更加透彻明白,有什么不对,请留言指教;

    其中,

    XmlNode 继承于 IConeable,IEnumerable,IXPathNavigable;

    XmlDocument 继承于XmlNode;

    XmlElement 继承于XmlLinkedNode,而XmlLinkedNode 继承于XmlNode;

     XML文档

     1 <?xml version='1.0' encoding='gb2312' ?>
     2 <books>
     3  <book>
     4   <name>哈利波特</name>
     5   <price>10</price>
     6   <memo>这是一本很好看的书。</memo>
     7  </book>
     8  <book id="B02">
     9   <name>三国演义</name>2
    10   <price>10</price>
    11   <memo>四大名著之一。</memo>
    12  </book>
    13  <book id="B03">
    14   <name>水浒</name>
    15   <price>6</price>
    16   <memo>四大名著之一。</memo>
    17  </book>
    18  <book id="B04">
    19   <name>红楼</name>
    20   <price>5</price>
    21   <memo>四大名著之一。</memo>
    22  </book>
    23 </books>  

    访问XML文档

    XMLDocument  xml=new XMLDocument();
    XMLElement theElement=null; theBook=null; the root=null;
    // public virtual void Load(string filename);
    // filename:
    //     文件的 URL,该文件包含要加载的 XML 文档。 URL 既可以是本地文件,也可以是 HTTP URL(Web 地址)。
    xml.Load(@"C:UsersqiuxiaozhouDesktopxxxTest.xml");
    // 获取文档的根 System.Xml.XmlElement。
    //返回结果:  表示 XML 文档树的根的 XmlElement。 如果不存在根,则返回 null。
    root=xml.DocumentElement;
     
    //相对上面取XML文档的另一个法子
    string strXml="<root><books>例子</books></root>";
    //从指定的字符串中加载XML文档
    xml.LoadXml(strXml);

    给XML添加新节点
    //创建具有指定名称的元素
    //返回结果:  新的 XmlElement。
    theBook=xml.CreateElement("book");
    theElement=xml.CreateElement("name");
    theElement.InnerText="新书";
    //将指定的节点添加到该节点的子节点列表的末尾。
    theBook.AppendChild(theElement);
    
    theElement=xml.CreateElement("price");
    theElement.InnerText="10元";
    theBook.AppendChild(theElement);
    
    theElement=xml.CreateElement("memo");
    theElement.InnerText="好书推荐";
    theBook.AppendChild(theElement);
    
    root.AppendChild(theBook);

     修改Node

    //选择匹配括号表达式的第一个 XmlNode。
    theBook=(XmlElement)root.SingleSelectNode("/books/book[name='哈里波特']");
    //包含此节点及其所有子节点的标记
    Console.WriteLine(theBook.OuterXML);
    //返回一个 System.Xml.XmlNodeList,它包含与指定 System.Xml.XmlElement.Name 匹配的所有子代元素的列表.
    //getElementsByTagName返回的是NodeList,所以要跟上item(0)。
    //另外,GetElementsByTagName("price")相当于SelectNodes(".
    //price")。 theBook.GetElementsByTagName("price").Item(0).InnerText = "15";
    //添加属性
    theBook.SetAttribute("id","B01");

     移除ID为特定值的

    theBook=(XmlElement)root.SingleSelectNode("/books/book[@id='B02']");
    theBook.ParentNode.RemoveChild(theBook);

    批量移除且保存

    XMLNodeList someBooks=root.SingleSelectNode("/books/book[price<10]");
    Console.WriteLine("删除价格小于10的,符合条件的有{0}本”,someBooks.Count);
    
    for(i=0;i<someBooks.Count;i++)
    {
    someBooks.Items[i].ParentNode.RemoveChild(someBooks.Item[i]);
    
    }
    
    xml.Save("xxxTest.xml");
  • 相关阅读:
    Flume线上日志采集【模板】
    【转】什么叫众筹?什么叫大数据?什么叫互联网思维?简单粗暴秒懂!
    【转】搞清楚LzoCodec和LzopCodec
    linux tail -f 和 tail -F的区别 && tail 的断点续传
    hadoop输出lzo文件并添加索引
    中文转Punycode
    Storm学习笔记——简介
    HBase学习笔记——Java API操作
    HBase学习笔记——配置及Shell操作
    HBase学习笔记——概念及原理
  • 原文地址:https://www.cnblogs.com/sauerkraut/p/6574926.html
Copyright © 2011-2022 走看看