C#操作XML

None.gif已知有一个XML文件(bookstore.xml)如下: 
None.gif
<?xml version="1.0" encoding="gb2312"?> 
None.gif
<bookstore> 
None.gif    
<book genre="fantasy" ISBN="2-3631-4"> 
None.gif        
<title>Oberon's Legacy</title> 
None.gif
        <author>Corets, Eva</author> 
None.gif        
<price>5.95</price> 
None.gif    
</book> 
None.gif
</bookstore> 
None.gif
None.gif
1、往<bookstore>节点中插入一个<book>节点: 
None.gifXmlDocument xmlDoc
=new XmlDocument(); 
None.gifxmlDoc.Load(
"bookstore.xml"); 
None.gifXmlNode root
=xmlDoc.SelectSingleNode("bookstore");//查找<bookstore> 
None.gif
XmlElement xe1=xmlDoc.CreateElement("book");//创建一个<book>节点 
None.gif
xe1.SetAttribute("genre","李赞红");//设置该节点genre属性 
None.gif
xe1.SetAttribute("ISBN","2-3631-4");//设置该节点ISBN属性 
None.gif

None.gifXmlElement xesub1
=xmlDoc.CreateElement("title"); 
None.gifxesub1.InnerText
="CS从入门到精通";//设置文本节点 
None.gif
xe1.AppendChild(xesub1);//添加到<book>节点中 
None.gif
XmlElement xesub2=xmlDoc.CreateElement("author"); 
None.gifxesub2.InnerText
="候捷"
None.gifxe1.AppendChild(xesub2); 
None.gifXmlElement xesub3
=xmlDoc.CreateElement("price"); 
None.gifxesub3.InnerText
="58.3"
None.gifxe1.AppendChild(xesub3); 
None.gif
None.gifroot.AppendChild(xe1);
//添加到<bookstore>节点中 
None.gif
xmlDoc.Save("bookstore.xml"); 
None.gif
//=============================================== 
None.gif
结果为: 
None.gif
<?xml version="1.0" encoding="gb2312"?> 
None.gif
<bookstore> 
None.gif    
<book genre="fantasy" ISBN="2-3631-4"> 
None.gif        
<title>Oberon's Legacy</title> 
None.gif
        <author>Corets, Eva</author> 
None.gif        
<price>5.95</price> 
None.gif    
</book> 
None.gif    
<book genre="李赞红" ISBN="2-3631-4"> 
None.gif        
<title>CS从入门到精通</title> 
None.gif        
<author>候捷</author> 
None.gif        
<price>58.3</price> 
None.gif    
</book> 
None.gif
</bookstore> 
None.gif
None.gif
2、修改节点:将genre属性值为“李赞红“的节点的genre值改为“update李赞红”,将该节点的子节点<author>的文本修改为“亚胜”。 
None.gifXmlNodeList nodeList
=xmlDoc.SelectSingleNode("bookstore").ChildNodes;//获取bookstore节点的所有子节点 
None.gif
foreach(XmlNode xn in nodeList)//遍历所有子节点 
ExpandedBlockStart.gifContractedBlock.gif
dot.gif
InBlock.gifXmlElement xe
=(XmlElement)xn;//将子节点类型转换为XmlElement类型 
InBlock.gif
if(xe.GetAttribute("genre")=="李赞红")//如果genre属性值为“李赞红” 
ExpandedSubBlockStart.gifContractedSubBlock.gif
dot.gif
InBlock.gifxe.SetAttribute(
"genre","update李赞红");//则修改该属性为“update李赞红” 
InBlock.gif

InBlock.gifXmlNodeList nls
=xe.ChildNodes;//继续获取xe子节点的所有子节点 
InBlock.gif
foreach(XmlNode xn1 in nls)//遍历 
ExpandedSubBlockStart.gifContractedSubBlock.gif
dot.gif
InBlock.gifXmlElement xe2
=(XmlElement)xn1;//转换类型 
InBlock.gif
if(xe2.Name=="author")//如果找到 
ExpandedSubBlockStart.gifContractedSubBlock.gif
dot.gif
InBlock.gifxe2.InnerText
="亚胜";//则修改 
InBlock.gif
break;//找到退出来就可以了 
ExpandedSubBlockEnd.gif
}
 
ExpandedSubBlockEnd.gif}
 
InBlock.gif
break
ExpandedSubBlockEnd.gif}
 
ExpandedBlockEnd.gif}
 
None.gif
None.gifxmlDoc.Save(
"bookstore.xml");//保存。 
None.gif
//================================================== 
None.gif
最后结果为: 
None.gif
<?xml version="1.0" encoding="gb2312"?> 
None.gif
<bookstore> 
None.gif
<book genre="fantasy" ISBN="2-3631-4"> 
None.gif
<title>Oberon's Legacy</title> 
None.gif
<author>Corets, Eva</author> 
None.gif
<price>5.95</price> 
None.gif
</book> 
None.gif
<book genre="update李赞红" ISBN="2-3631-4"> 
None.gif
<title>CS从入门到精通</title> 
None.gif
<author>亚胜</author> 
None.gif
<price>58.3</price> 
None.gif
</book> 
None.gif
</bookstore> 
None.gif
None.gif
3、删除 <book genre="fantasy" ISBN="2-3631-4">节点的genre属性,删除 <book genre="update李赞红" ISBN="2-3631-4">节点。 
None.gifXmlNodeList xnl
=xmlDoc.SelectSingleNode("bookstore").ChildNodes; 
None.gif
None.gif
foreach(XmlNode xn in xnl) 
ExpandedBlockStart.gifContractedBlock.gif
dot.gif
InBlock.gifXmlElement xe
=(XmlElement)xn; 
InBlock.gif
if(xe.GetAttribute("genre")=="fantasy"
ExpandedSubBlockStart.gifContractedSubBlock.gif
dot.gif
InBlock.gifxe.RemoveAttribute(
"genre");//删除genre属性 
ExpandedSubBlockEnd.gif
}
 
InBlock.gif
else if(xe.GetAttribute("genre")=="update李赞红"
ExpandedSubBlockStart.gifContractedSubBlock.gif
dot.gif
InBlock.gifxe.RemoveAll();
//删除该节点的全部内容 
ExpandedSubBlockEnd.gif
}
 
ExpandedBlockEnd.gif}
 
None.gifxmlDoc.Save(
"bookstore.xml"); 
None.gif
//=========================================== 
None.gif
最后结果为: 
None.gif
<?xml version="1.0" encoding="gb2312"?> 
None.gif
<bookstore> 
None.gif
<book ISBN="2-3631-4"> 
None.gif
<title>Oberon's Legacy</title> 
None.gif
<author>Corets, Eva</author> 
None.gif
<price>5.95</price> 
None.gif
</book> 
None.gif
<book> 
None.gif
</book> 
None.gif
</bookstore> 
None.gif
None.gif
4、显示所有数据。 
None.gifXmlNode xn
=xmlDoc.SelectSingleNode("bookstore"); 
None.gif
None.gifXmlNodeList xnl
=xn.ChildNodes; 
None.gif
None.gif
foreach(XmlNode xnf in xnl) 
ExpandedBlockStart.gifContractedBlock.gif
dot.gif
InBlock.gifXmlElement xe
=(XmlElement)xnf; 
InBlock.gifConsole.WriteLine(xe.GetAttribute(
"genre"));//显示属性值 
InBlock.gif
Console.WriteLine(xe.GetAttribute("ISBN")); 
InBlock.gif
InBlock.gifXmlNodeList xnf1
=xe.ChildNodes; 
InBlock.gif
foreach(XmlNode xn2 in xnf1) 
ExpandedSubBlockStart.gifContractedSubBlock.gif
dot.gif
InBlock.gifConsole.WriteLine(xn2.InnerText);
//显示子节点点文本 
ExpandedSubBlockEnd.gif
}
 
ExpandedBlockEnd.gif}

转载于:https://www.cnblogs.com/DODONG/archive/2006/04/07/369302.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值