XML样例:
<wbr></wbr>
<?xml version="1.0" encoding="gb2312"?>
<bookstore>
<book genre="李2红" ISBN="2-3631-4">
<title>CS从入门到精通</title>
<author>候捷</author>
<price>58.3</price>
</book>
<book genre="李赞红" ISBN="2-3631-4">
<title>CS从入门到精通</title>
<author>小六</author>
<price>58.3</price>
</book>
<book45 genre="李赞红" ISBN="2-3631-4">
<title>CS从入门到精通</title>
<author>大黄</author>
<price>58.3</price>
</book45>
</bookstore>
测试代码:
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("E:\\bookstore.xml");
//获取bookstore节点的所有子节点
XmlNodeList nodeList = xmlDoc.SelectSingleNode("bookstore").ChildNodes;
for (int i = 0; i < nodeList.Count; i++)//遍历每个book节点
{ //将子节点类型转换为XmlElement类型
XmlElement xe = (XmlElement)nodeList.Item(i);
if (xe.Name == "book")
{ //如果genre属性值为“李赞红”
if (xe.GetAttribute("genre") == "李赞红")
{ //继续获取xe子节点的所有子节点
XmlNodeList nls = xe.ChildNodes;
for (int j = 0; j < nls.Count; j++)
{
XmlElement xe2 = (XmlElement)nls.Item(j);//转换类型
//title、author、price都会在xe2.Name中取到
if (xe2.Name == "author")//如果找到
{
xe2.InnerText = "Karli Waston";//则修改
}
else //如果不存在则新建
{
xe2.SetAttribute("NewAttribute", "新增属性");
}
}
}
else
{
//如果genre属性值不为“李赞红”,则修改为李赞红
xe.SetAttribute("genre", "李赞红");
}
}
else //如果不存在book节点,则在该节点下新增一个book下级节点
{
XmlElement subElement = xmlDoc.CreateElement("因为这个节点不是book");
subElement.InnerXml = "BigDog";
xe.AppendChild(subElement);
}
}
xmlDoc.Save("E:\\bookstore.xml");//保存。
修改后的XML:
<?xml version="1.0" encoding="gb2312"?>
<bookstore>
<book genre="李赞红" ISBN="2-3631-4">
<title>CS从入门到精通</title>
<author>候捷</author>
<price>58.3</price>
</book>
<book genre="李赞红" ISBN="2-3631-4">
<title NewAttribute="新增属性">CS从入门到精通</title>
<author>Karli Waston</author>
<price NewAttribute="新增属性">58.3</price>
</book>
<book45 genre="李赞红" ISBN="2-3631-4">
<title>CS从入门到精通</title>
<author>大黄</author>
<price>58.3</price>
<因为这个节点不是book>BigDog</因为这个节点不是book>
</book45>
</bookstore>
如果现在根节点下新增某个节点,代码如下:
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("E:\\bookstore.xml");
XmlNode root = xmlDoc.DocumentElement;
XmlElement subElement = xmlDoc.CreateElement("根节点下新增");
subElement.InnerXml = "BigDog";
root.AppendChild(subElement);
<wbr></wbr>