<?xml version="1.0" encoding="gb2312"?>
<BookShop>
  <Book>
    <title>C++语言从入门到精通</title>
    <author>张津阁</author>
    <price>28.3</price>
  </Book>
  <Book>
    <title>Visual Basic.NET入门帮助</title>
    <author>高手</author>
    <price>158.3</price>
  </Book>
  <Book>
    <title>Visual Basic.NET入门帮助</title>
    <author>高手</author>
    <price>158.3</price>
  </Book>
</BookShop>
如何将含“Visual Basic.NET入门帮助”的所有<Book >元素节点删除?

解决方案 »

  1.   

    用xpath SelectSingleNode出具体节点xmlnode,然后用remove
      

  2.   

    我遇到问题是不能把所有的含“Visual   Basic.NET入门帮助”的book元素节点删除
      

  3.   


    XmlNode root = (XmlNode)xmlDoc.DocumentElement;foreach (XmlNode xn in root.SelectNodes("descendant::title/text()"))
    {
       if (xn.Value.Trim().Equals("Visual Basic.NET入门帮助"))
       {
           XmlNode node = xn.ParentNode.ParentNode;
           if (node.Name.ToLower().Equals("book"))
           {
                node.ParentNode.RemoveChild(node);
           }
       }
    }
      

  4.   

    3楼的答案可以再简化一下如下:
    System.Xml.XmlDocument document = new System.Xml.XmlDocument();
    document.Load(@"c:\\1.xml");
    System.Xml.XmlNodeList nl = document.SelectNodes(@"//Book[title=' Visual Basic.NET入门帮助 ']");
    foreach (System.Xml.XmlNode n in nl)
      {
        n.ParentNode.RemoveChild(n);
      }
    Console.WriteLine(document.InnerXml);