C# XPath用于选择特定节点下的节点,该节点之间有零个或多个节点
我的Xml看起来像这样C# XPath用于选择特定节点下的节点,该节点之间有零个或多个节点,c#,xpath,xml-parsing,xpathnavigator,C#,Xpath,Xml Parsing,Xpathnavigator,我的Xml看起来像这样 <root> <parent name="Iam"> <child1 name="123"> <toy name="wii"> </toy> </child> </parent> <parent name="Iam"> <toy name="wii"
<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>
这显然是错误的,因为它失败了
我需要xpath来选择基数为0或更多的和之间的所有节点
我无法更改XML的格式。这似乎对我有效:
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);
}
希望这就是你想要的
干杯 我没有尝试使用XPathNavigator,但是在XPath中,双正斜杠
/
将返回所有匹配项-请参阅
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);
}