How to select nodes where node name contains "mystring"

afin picture afin · Apr 22, 2010 · Viewed 17.1k times · Source

I need to get XmlNodeList where node name contains "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>

Desired output is

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

I tried something like XmlNodeList mystringElements = xmlDocument.SelectNodes(@"//*[contains(name,'mystring')]");

But it returns zero node. What should I put in XPath query to achieve this.

Answer

Welbog picture Welbog · Apr 22, 2010

You need to use the name() function. Just name alone will try to match an element named "name".

You want this:

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