always there for you

善于生活,善于学习,这是我和你的目标.

« 浅谈水晶报表在ASP.NET中的一种灵活应用Linux常用联机帮助命令 »

.NET 操作XML

  作者:Kane 日期:2006-04-26

我用的是一种很笨的方法,但可以帮助初学者了解访问XML节点的过程。

已知有一个XML文件(bookstore.xml)如下:
 

  1. <?xml version="1.0" encoding="gb2312"?>  
  2. <bookstore>  
  3.   <book genre="fantasy" ISBN="2-3631-4">  
  4.     <title>Oberon's Legacy</title>  
  5.     <author>Corets, Eva</author>  
  6.     <price>5.95</price>  
  7.   </book>  
  8. </bookstore>  



1、往<bookstore>节点中插入一个<book>节点:
 

  1.   XmlDocument xmlDoc=new XmlDocument();   
  2.    xmlDoc.Load("bookstore.xml");   
  3.    XmlNode root=xmlDoc.SelectSingleNode("bookstore");//查找<bookstore>   
  4.    XmlElement xe1=xmlDoc.CreateElement("book");//创建一个<book>节点   
  5.    xe1.SetAttribute("genre","李赞红");//设置该节点genre属性   
  6.    xe1.SetAttribute("ISBN","2-3631-4");//设置该节点ISBN属性   
  7.     
  8.    XmlElement xesub1=xmlDoc.CreateElement("title");   
  9.    xesub1.InnerText="CS从入门到精通";//设置文本节点   
  10.    xe1.AppendChild(xesub1);//添加到<book>节点中   
  11.    XmlElement xesub2=xmlDoc.CreateElement("author");   
  12.    xesub2.InnerText="候捷";   
  13.    xe1.AppendChild(xesub2);   
  14.    XmlElement xesub3=xmlDoc.CreateElement("price");   
  15.    xesub3.InnerText="58.3";   
  16.    xe1.AppendChild(xesub3);   
  17.     
  18.    root.AppendChild(xe1);//添加到<bookstore>节点中   
  19.    xmlDoc.Save("bookstore.xml");  

//===============================================
结果为:
 

  1. <?xml version="1.0" encoding="gb2312"?>  
  2. <bookstore>  
  3.   <book genre="fantasy" ISBN="2-3631-4">  
  4.     <title>Oberon's Legacy</title>  
  5.     <author>Corets, Eva</author>  
  6.     <price>5.95</price>  
  7.   </book>  
  8.   <book genre="李赞红" ISBN="2-3631-4">  
  9.     <title>CS从入门到精通</title>  
  10.     <author>候捷</author>  
  11.     <price>58.3</price>  
  12.   </book>  
  13. </bookstore>  



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

  1.  XmlNodeList nodeList=xmlDoc.SelectSingleNode("bookstore").ChildNodes;//获取bookstore节点的所有子节点   
  2.    foreach(XmlNode xn in nodeList)//遍历所有子节点   
  3.    {   
  4.     XmlElement xe=(XmlElement)xn;//将子节点类型转换为XmlElement类型   
  5.     if(xe.GetAttribute("genre")=="李赞红")//如果genre属性值为“李赞红”   
  6.     {   
  7.      xe.SetAttribute("genre","update李赞红");//则修改该属性为“update李赞红”   
  8.     
  9.      XmlNodeList nls=xe.ChildNodes;//继续获取xe子节点的所有子节点   
  10.      foreach(XmlNode xn1 in nls)//遍历   
  11.      {   
  12.       XmlElement xe2=(XmlElement)xn1;//转换类型   
  13.       if(xe2.Name=="author")//如果找到   
  14.       {   
  15.        xe2.InnerText="亚胜";//则修改   
  16.        break;//找到退出来就可以了   
  17.       }   
  18.      }   
  19.      break;   
  20.     }   
  21.    }   
  22.     
  23.    xmlDoc.Save("bookstore.xml");//保存。  

//==================================================
最后结果为:
 

  1. <?xml version="1.0" encoding="gb2312"?>  
  2. <bookstore>  
  3.   <book genre="fantasy" ISBN="2-3631-4">  
  4.     <title>Oberon's Legacy</title>  
  5.     <author>Corets, Eva</author>  
  6.     <price>5.95</price>  
  7.   </book>  
  8.   <book genre="update李赞红" ISBN="2-3631-4">  
  9.     <title>CS从入门到精通</title>  
  10.     <author>亚胜</author>  
  11.     <price>58.3</price>  
  12.   </book>  
  13. </bookstore>  


3、删除 <book genre="fantasy" ISBN="2-3631-4">节点的genre属性,删除 <book genre="update李赞红" ISBN="2-3631-4">节点。

 

  1. XmlNodeList xnl=xmlDoc.SelectSingleNode("bookstore").ChildNodes;   
  2.     
  3.    foreach(XmlNode xn in xnl)   
  4.    {   
  5.     XmlElement xe=(XmlElement)xn;   
  6.     if(xe.GetAttribute("genre")=="fantasy")   
  7.     {   
  8.      xe.RemoveAttribute("genre");//删除genre属性   
  9.     }   
  10.     else if(xe.GetAttribute("genre")=="update李赞红")   
  11.     {   
  12.      xe.RemoveAll();//删除该节点的全部内容   
  13.     }   
  14.    }   
  15.    xmlDoc.Save("bookstore.xml");  


//===========================================
最后结果为:
 

  1. <?xml version="1.0" encoding="gb2312"?>  
  2. <bookstore>  
  3.   <book ISBN="2-3631-4">  
  4.     <title>Oberon's Legacy</title>  
  5.     <author>Corets, Eva</author>  
  6.     <price>5.95</price>  
  7.   </book>  
  8.   <book>  
  9.   </book>  
  10. </bookstore>  
  11.    



4、显示所有数据。
  

  1. XmlNode xn=xmlDoc.SelectSingleNode("bookstore");   
  2.     
  3.    XmlNodeList xnl=xn.ChildNodes;   
  4.       
  5.    foreach(XmlNode xnf in xnl)   
  6.    {   
  7.     XmlElement xe=(XmlElement)xnf;   
  8.     Console.WriteLine(xe.GetAttribute("genre"));//显示属性值   
  9.     Console.WriteLine(xe.GetAttribute("ISBN"));   
  10.     
  11.     XmlNodeList xnf1=xe.ChildNodes;   
  12.     foreach(XmlNode xn2 in xnf1)   
  13.     {   
  14.      Console.WriteLine(xn2.InnerText);//显示子节点点文本   
  15.     }   
  16.    }  



 

 

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

日历

最新评论及回复

最近发表

Copyright www.alwaysthere.com.cn . Some Rights Reserved.

              

Powered By Z-Blog 1.8 Devo Build 80201