Выберите больше, чем один узел из XML с помощью LINQ

StackOverflow https://stackoverflow.com/questions/2816398

  •  26-09-2019
  •  | 
  •  

Вопрос

У меня есть такой XML

<root>
    <content>
        ....
    </content>
    <index>
        ....
    </index>
    <keywords>
        ....
    </keywords>
</root>

Но мне нужно выбрать просто и узлы.

<content>
    ....
</content>
<index>
    ....
</index>

Я обнаружил, как выбрать только один узел.

XElement Content = new XElement("content", from el in xml.Elements() select el.Element("content").Elements());

Как я могу получить оба узла?

Это было полезно?

Решение

var elements = 
    from element in xml.Root.Elements()
    where element.Name == "content" ||
          element.Name == "index"
    select element;
var newContentNode = new XElement("content", elements);

Другие советы

После того, как у вас будет загруженный файл XML, вы можете получить все узлы содержимого через:

var cons = from con in xmlFile.Descendants("content");

И аналогично вы можете получить узлы индекса как:

var idxs = from idx in xmlFile.Descendants("index")

Я не думаю, что вы можете запрашивать два узла, используя одну строку запроса.

Использование лямбда:

    var elements = document
        .Descendants()
        .Where(element => element.Name == "content" || element.Name == "index");
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top