首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

用C#删除XML中的一个节点的简单有关问题,请大家帮小弟我想想办法

2013-04-02 
用C#删除XML中的一个节点的简单问题,请大家帮我想想办法已知xml文件如下:?xml version1.0 encodingg

用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='李赞红']");



[解决办法]
XmlNodeList xnl=xmlDoc.SelectSingleNode("bookstore").ChildNodes;
List<XmlNode> delNodes = new List<XmlNode>();
    foreach(XmlNode xn in xnl)
    {
     XmlElement xe=(XmlElement)xn;
     if(xe.GetAttribute("genre")=="李赞红")
     {
      xe.RemoveAll();//删除该节点的全部内容
     }
if(!xn.HasChildNodes){
delNodes.Add(xn);

    }
foreach(XmlNode xn in delNodes){
xn .ParentNode.RemoveChild(xn );
}

热点排行