码迷,mamicode.com
首页 > 其他好文 > 详细

关于XML的读取,添加,修改,删除

时间:2017-03-18 18:06:02      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:名著   attr   void   pre   count   sdn   指定   move   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:\Users\qiuxiaozhou\Desktop\xxxTest.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");

 

关于XML的读取,添加,修改,删除

标签:名著   attr   void   pre   count   sdn   指定   move   XML   

原文地址:http://www.cnblogs.com/sauerkraut/p/6574926.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!