用C#删除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="李赞红" ISBN="2-3631-4">
<title>CS从入门到精通</title>
<author>候捷</author>
<price>58.3</price>
</book>
</bookstore>
删除 <book genre="李赞红" ISBN="2-3631-4">节点
XmlNodeList xnl=xmlDoc.SelectSingleNode("bookstore").ChildNodes;
foreach(XmlNode xn in xnl)
{
XmlElement xe=(XmlElement)xn;
if(xe.GetAttribute("genre")=="李赞红")
{
xe.RemoveAll();//删除该节点的全部内容
}
}
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>
</book>
</bookstore>
=============================================
我的问题是如何将那个剩下的
<book>
</book>也一起删了?
xml
删除节点
------解决方案--------------------修改如下试试
if (xe.GetAttribute("genre") == "李赞红")
{
xn.ParentNode.RemoveChild(xn);
}
------解决方案--------------------public static void XmlNodeDelete(string xmlPath,string Node)
{
XmlDocument objXmlDoc = new XmlDocument();
objXmlDoc.Load(xmlPath); //xml路径
string mainNode = Node.Substring(0, Node.LastIndexOf("/"));
objXmlDoc.SelectSingleNode(mainNode).RemoveChild(objXmlDoc.SelectSingleNode(Node)); //删除节点路径
objXmlDoc.Save(xmlPath);
}
------解决方案--------------------写错了,,,
XmlNode xn = xmlDoc.SelectSingleNode("bookstore");
xn.RemoveChild(xn.SelectSingleNode("book[@genre='李赞红']");