Как выбрать узлы, где имя узла содержит «mystring» - PullRequest
6 голосов
/ 22 апреля 2010

Мне нужно получить XmlNodeList, где имя узла содержит «mystring»

XML

    <?xml version="1.0" encoding="utf-8"?>
<root>
  <node1>
    node1 value
  </node1>
  <node2_mystring>
    node2 value
  </node2_mystring>
  <node3>
    node3 value
  </node3>
  <node4_mystring>
    node 4 value
  </node4_mystring>
</root>

Требуемый вывод

<?xml version="1.0" encoding="utf-8"?>
<root>
  <node2_mystring>
    node2 value
  </node2_mystring>
  <node4_mystring>
    node 4 value
  </node4_mystring>
</root>

Я пробовал что-то вроде XmlNodeList mystringElements = xmlDocument.SelectNodes(@"//*[contains(name,'mystring')]");

Но он возвращает нулевой узел.Что для этого нужно добавить в запрос XPath.

1 Ответ

12 голосов
/ 22 апреля 2010

Вам необходимо использовать функцию name(). Только name попытается сопоставить элемент с именем "name".

Вы хотите это:

//*[contains(name(),'mystring')]
...