C#中对 XML节点进行添加,删除

来源:网络时间:2011-06-22 13:01:20

  已知有一个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、往节点中插入一个节点:

  XmlDocument xmlDoc=new XmlDocument();

  xmlDoc.Load("bookstore.xml");

  XmlNode root=xmlDoc.SelectSingleNode("bookstore");//查找

  XmlElement xe1=xmlDoc.CreateElement("book");//创建一个节点

  xe1.SetAttribute("genre","李赞红");//设置该节点genre属性

  xe1.SetAttribute("ISBN","2-3631-4");//设置该节点ISBN属性

  XmlElement xesub1=xmlDoc.CreateElement("title");

  xesub1.InnerText="CS从入门到精通";//设置文本节点

  xe1.AppendChild(xesub1);//添加到节点中

  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);//添加到节点中

  xmlDoc.Save("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>

  <book genre="李赞红" ISBN="2-3631-4">

  <title>CS从入门到精通</title>

  <author>候捷</author>

  <price>58.3</price>

  </book>

  </bookstore>

  2、修改节点:将genre属性值为“李赞红“的节点的genre值改为“update李赞红”,将该节点的子节点的文本修改为“亚胜”。

  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;//转换类型

  if(xe2.Name=="author")//如果找到

  {

  xe2.InnerText="亚胜";//则修改

  break;//找到退出来就可以了

  }

  }

  break;

  }

  }

  xmlDoc.Save("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>

  <book genre="update李赞红" ISBN="2-3631-4">

  <title>CS从入门到精通</title>

  <author>亚胜</author>

  <price>58.3</price>

  </book>

  </bookstore>

  3、删除 节点的genre属性,删除 节点。

  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")=="update李赞红")

  {

  xe.RemoveAll();//删除该节点的全部内容

  }

  }

  xmlDoc.Save("bookstore.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、显示所有数据。

  XmlNode xn=xmlDoc.SelectSingleNode("bookstore");

  XmlNodeList xnl=xn.ChildNodes;

  foreach(XmlNode xnf in xnl)

  {

  XmlElement xe=(XmlElement)xnf;

  Console.WriteLine(xe.GetAttribute("genre"));//显示属性值

  Console.WriteLine(xe.GetAttribute("ISBN"));

  XmlNodeList xnf1=xe.ChildNodes;

  foreach(XmlNode xn2 in xnf1)

  {

  Console.WriteLine(xn2.InnerText);//显示子节点点文本

  }

  }

文章内容来源于网络,不代表本站立场,若侵犯到您的权益,可联系我们删除。(本站为非盈利性质网站) 联系邮箱:9145908@qq.com