日期:2014-05-20  浏览次数:21052 次

如何用XML存放多条记录,然后读去某一标记的指定记录?
如何用XML存放多条记录,然后读去某一标记的指定记录?

------解决方案--------------------
已知有一个XML文件(bookstore.xml)如下:
<?xml version= "1.0 " encoding= "gb2312 "?>
<bookstore>
<book genre= "fantasy " ISBN= "4-2341-8 ">
<title> C# 编程指南 </title>
<author> James Zhao </author>
<price> 53.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= "4-2341-8 ">
<title> C# 编程指南 </title>
<author> James Zhao </author>
<price> 53.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= "4-2341-8 ">
<title> C# 编程指南 </title>
<author> James Zhao </author>
<price> 53.95 </price>
</book>
<book genre= "update李赞红 " ISBN= "2-3631-4 ">
<title> CS从入门到精通 </title>
<author> 亚胜 </author>
<price> 58.3 </price>