xml理解

已知有一个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( "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( "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李赞红”,将该节点的子节点 <author> 的文本修改为“亚胜”。      
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、删除    <book   genre= "fantasy "   ISBN= "2-3631-4 "> 节点的genre属性,删除    <book   genre= "update李赞红 "   ISBN= "2-3631-4 "> 节点。      
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);//显示子节点点文本      
}      
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值