views:

98

answers:

1

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.

+2  A: 

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

You want this:

//*[contains(name(),'mystring')]
Welbog
@Welbog: Thank you
afin