<?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(E:\\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(E:\\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>的文本修改为“亚胜”。
XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(E:\\bookstore.xml); 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;//转换类型 //title、author、price都会在xe2.Name中取到 if (xe2.Name == author)//如果找到 { xe2.InnerText = 亚胜;//则修改 break;//找到退出来就可以了 } } break; } } xmlDoc.Save(bookstore.xml);//保存。
小注:
1、去掉修改节点代码中的两个break后,该代码可以实现遍历修改整个xml文档的功能,由此可见foreach对于操作XML文件,可以进行遍历的修改,但不能进行遍历的增加与删除。
2、注意对于xml文件操作中for与foreach的对应转化:关于XML遍历新增节点,修改属性小例
修改后的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、删除 <bookgenre=fantasy ISBN=2-3631-4>节点的genre属性,删除 <bookgenre=update李赞红 ISBN=2-3631-4>节点。
XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(E:\\bookstore.xml); 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) == 李赞红) { //RemoveAll会移除指定节点下所有信息,但会保留该节点 xe.RemoveAll();//删除该节点的全部内容 } } xmlDoc.Save(E:\\bookstore.xml);小注:在操作XML文件的时候使用了foreach,故删除一个节点的全部内容后,便会跳出foreach循环。 修改后的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、显示所有数据。 XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(E:\\bookstore.xml); XmlNode xn = xmlDoc.SelectSingleNode(bookstore); XmlNodeList xnl = xn.ChildNodes; foreach (XmlNode xnf in xnl) { XmlElement xe = (XmlElement)xnf; MessageBox.Show(xe.GetAttribute(genre));//显示属性值 MessageBox.Show(xe.GetAttribute(ISBN)); XmlNodeList xnf1 = xe.ChildNodes; foreach (XmlNode xn2 in xnf1) { MessageBox.Show(xn2.InnerText);//显示子节点点文本 } } 原文地址==》
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。