我的Xml看起来像这样
<root>
<parent name="Iam">
<child1 name="123">
<toy name="wii">
</toy>
</child>
</parent>
<parent name="Iam">
<toy name="wii">
</toy>
</parent>
<parent name="Sam">
<child1 name="999">
<toy name="xbox">
</toy>
</child>
</parent>
</root>
我需要选择所有&lt; toy&gt;名称=“wii”的节点在&lt; parent&gt;下名字=“Iam”。请注意&lt; toy&gt;可以是&lt; parent&gt;的直接子项或&lt; parent&gt;的孙子(在&lt; child&gt;下)
&lt; child&gt;节点可以有0或更多基数。
我尝试在XPathNavigator中使用此xpath / parent [@ name ='Iam'] / * / toy [@ name ='wii'] 。
`XPathNodeIterator nodeIter = schemaNavigator.Select(schemaXPath, namespaceMgr);`
这显然是错误的,因为它失败了。
我需要xpath来选择&lt; parent&gt;之间的所有节点和&lt;玩具&gt;基数为0或更多的基数。
我无法更改XML的格式。
答案 0 :(得分:3)
这似乎对我有用:
string schemaXPath = "//parent[@name='Iam']//toy[@name='wii']";
XPathNavigator schemaNavigator = oXmlDocument.CreateNavigator();
XPathNodeIterator nodeIter = schemaNavigator.Select(schemaXPath, namespaceMgr);
while (nodeIter.MoveNext() == true)
{
Console.WriteLine(nodeIter.Current.Name);
}
希望这就是你要找的东西。
干杯!