Выберите некоторые элементы по имени? - PullRequest
0 голосов
/ 26 января 2019

Например, XML

<X>
  <A>aaa</A>
  <B>bbb</B>
  <C>ccc</C>
</X>

Как выбрать пункт A и C в одной XPATH?

var xmldoc = new XmlDocument();
xmldoc.LoadXml(x);
var r = xmldoc.SelectSingleNode("/X/(A, C)"); // r should have aaa and ccc only

(xmldoc.SelectSingleNode("/X/*[local-name() = \"A\" or local-name() = \"C\"]")).OuterXml возвращает <A>aaa</A>?

Ответы [ 2 ]

0 голосов
/ 26 января 2019

Это XPath,

/X/*[self::A or self::C]

выберет все A и C потомков X.

Обратите внимание, что, поскольку вы стремитесь выбрать несколько элементов, вам нужно использовать XmlNode.SelectNodes(), например вместо .SelectSingleNode(), и быть готовым обработать XmlNodeList, который он возвращает.

0 голосов
/ 26 января 2019

попробуйте

var r = xdoc.SelectNodes("//X/C | //X/A");

var xmldoc = new XmlDocument();
xmldoc.LoadXml(x);
var r = xmlDoc.SelectNodes("//X/C | //X/A");

foreach (XmlNode i in r)
    Debug.WriteLine(i.Value);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...