代码之家  ›  专栏  ›  技术社区  ›  Justin Soliz

linq to xml,从查询筛选元素(c)

  •  1
  • Justin Soliz  · 技术社区  · 14 年前

    我只是想查询一个XML文档,并迭代结果减去特定元素。理想情况下,我希望在查询中实现这一点,而不是在迭代之前或期间从集合中删除它。

    <body>
           Stuff I want
      <element>
           Stuff I dont want
      </element>
    </body>
    

    我沿着这条线尝试了一些东西,但没有运气……

            var doc = XDocument.Load("document.xml");
            var results = doc.Descendants("body")
                             .Where(x => x.Name != "element")
    

    我当然不想再使用XML了,如果这个问题已经得到了解答,我很抱歉。

    1 回复  |  直到 14 年前
        1
  •  1
  •   nithins    14 年前

    一种方法是获取文档,查询不需要的内容,然后.remove()它们。例如,如果您是XML,则其外观如下:

    <body>
        Stuff I want
        <element>Stuff I dont want</element>
        <element>Stuff I want</element>
    </body>
    

    除了包含“我不想要的东西”之外,您可以使用以下代码对文档进行修改:

            var doc = XDocument.Load("foo.xml");
    
            IEnumerable<XElement> nodes =
                                    from node in doc.Descendants("element")
                                    where node.Value == "Stuff I dont want"
                                    select node;
    
            if (nodes != null)
            {
                nodes.Remove();
            }
    

    然后在您的文档中生成以下内容:

    <body>
        Stuff I want
        <element>Stuff I want</element>
    </body>