----- 转载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");
时间: 2024-12-28 20:24:58