XML 增、删、改

互联网 17-2-15
样本XML文件(bookstore.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>  </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 增、删、改的内容,更多相关内容请关注PHP中文网(www.php.cn)!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: XML, 增删改
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:Xml SelectNodes 与 XPath

相关资讯