<?xml version="1.0" encoding="gb2312"?> <bookstore> <book genre="fantasy" ISBN="2-3631-4"> <title>Oberon's Legacy</title> <author>Corets, Eva</author> <price>5.95</price> </book> </bookstore>
1、往<bookstore>节点中插进去一个<book>节点:
XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load("E:\\bookstore.xml"); XmlNode root = xmlDoc.SelectSingleNode("bookstore");//查找<bookstore> XmlElement xe1 = xmlDoc.CreateElement("book");//建立一个<book>节点 xe1.SetAttribute("genre", "李赞红");//设置该节点genre属性 xe1.SetAttribute("ISBN", "2-3631-4");//设置该节点ISBN属性 XmlElement xesub1 = xmlDoc.CreateElement("title"); xesub1.InnerText = "CS从入门到通晓";//设置文本节点 xe1.AppendChild(xesub1);//添加到<book>节点中 XmlElement xesub2 = xmlDoc.CreateElement("author"); xesub2.InnerText = "候捷"; xe1.AppendChild(xesub2); XmlElement xesub3 = xmlDoc.CreateElement("price"); xesub3.InnerText = "58.3"; xe1.AppendChild(xesub3); root.AppendChild(xe1);//添加到<bookstore>节点中 xmlDoc.Save("E:\\bookstore.xml");
修正后的xml文件为:
<?xml version="1.0" encoding="gb2312"?> <bookstore> <book genre="fantasy" ISBN="2-3631-4"> <title>Oberon's Legacy</title> <author>Corets, Eva</author> <price>5.95</price> </book> <book genre="李赞红"ISBN="2-3631-4"> <title>CS从入门到通晓</title> <author>候捷</author> <price>58.3</price> </book> </bookstore>
2、修正节点:将genre属性值为“李赞红“的节点的genre值改成“update李赞红”,将该节点的子节点<author>的文本修正为“亚胜”。
XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load("E:\\bookstore.xml"); XmlNodeList nodeList = xmlDoc.SelectSingleNode("bookstore").ChildNodes;//猎取bookstore节点的一切子节点 foreach (XmlNode xn in nodeList)//遍历一切子节点 { XmlElement xe = (XmlElement)xn;//将子节点范例转换为XmlElement范例 if (xe.GetAttribute("genre") == "李赞红")//假如genre属性值为“李赞红” { xe.SetAttribute("genre", "update李赞红");//则修正该属性为“update李赞红” XmlNodeList nls = xe.ChildNodes;//继承猎取xe子节点的一切子节点 foreach (XmlNode xn1 in nls)//遍历 { XmlElement xe2 = (XmlElement)xn1;//转换范例 //title、author、price都会在xe2.Name中取到 if (xe2.Name == "author")//假如找到 { xe2.InnerText = "亚胜";//则修正 break;//找到退出来就能够了 } } break; } } xmlDoc.Save("bookstore.xml");//保存。
小注:
1、去掉修正节点代码中的两个break后,该代码能够完成遍历修正全部xml文档的功用,因而可知foreach关于操纵XML文件,能够举行遍历的修正,但不能举行遍历的增添与删除。
2、注重关于xml文件操纵中for与foreach的对应转化:关于XML遍历新增节点,修正属性小例
修正后的xml文件为:
<?xml version="1.0" encoding="gb2312"?> <bookstore> <book genre="fantasy" ISBN="2-3631-4"> <title>Oberon's Legacy</title> <author>Corets, Eva</author> <price>5.95</price> </book> <book genre="update李赞红" ISBN="2-3631-4"> <title>CS从入门到通晓</title> <author>亚胜</author> <price>58.3</price> </book> </bookstore>
3、删除 <bookgenre="fantasy" ISBN="2-3631-4">节点的genre属性,删除 <bookgenre="update李赞红" ISBN="2-3631-4">节点。
XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load("E:\\bookstore.xml"); XmlNodeList xnl = xmlDoc.SelectSingleNode("bookstore").ChildNodes; foreach (XmlNode xn in xnl) { XmlElement xe = (XmlElement)xn; if (xe.GetAttribute("genre") == "fantasy") { xe.RemoveAttribute("genre");//删除genre属性 } else if (xe.GetAttribute("genre") == "李赞红") { //RemoveAll会移除指定节点下一切信息,但会保存该节点 xe.RemoveAll();//删除该节点的全部内容 } } xmlDoc.Save("E:\\bookstore.xml");小注:在操纵XML文件的时刻使用了foreach,故删除一个节点的全部内容后,便会跳出foreach轮回。 修正后的xml文件为:<?xml version="1.0" encoding="gb2312"?> <bookstore> <book ISBN="2-3631-4"> <title>Oberon's Legacy</title> <author>Corets, Eva</author> <price>5.95</price> </book> <book> </book> </bookstore>4、显现一切数据。 XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load("E:\\bookstore.xml"); XmlNode xn = xmlDoc.SelectSingleNode("bookstore"); XmlNodeList xnl = xn.ChildNodes; foreach (XmlNode xnf in xnl) { XmlElement xe = (XmlElement)xnf; MessageBox.Show(xe.GetAttribute("genre"));//显现属性值 MessageBox.Show(xe.GetAttribute("ISBN")); XmlNodeList xnf1 = xe.ChildNodes; foreach (XmlNode xn2 in xnf1) { MessageBox.Show(xn2.InnerText);//显现子节点点文本 } } 原文地点==》
以上就是XML 增、删、改的内容,更多相关内容请关注ki4网(www.ki4.cn)!