Linq to Xml, фильтрующий элемент из запроса (C #) - PullRequest
1 голос
/ 21 сентября 2010

Я просто пытаюсь запросить 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 Ответ

1 голос
/ 21 сентября 2010

Один из способов сделать это - получить документ, запросить ненужные материалы, а затем .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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...