【发布时间】:2011-08-17 12:07:20
【问题描述】:
我有这个 XML 文件:
<?xml version="1.0" encoding="UTF-8"?>
<karteikasten>
<vokabel stufe="1">
<eng>
<item>Hi</item>
<item>Hello</item>
</eng>
<de>
<item>Hallo</item>
<item>Moin</item>
</de>
</vokabel>
<vokabel stufe="1">
<eng>
<item>Eating</item>
</eng>
<de>
<item>Essen</item>
<item>Mampfen</item>
</de>
</vokabel>
</karteikasten>
我想选择属性“stufe”,其中<item> 是“Hi”、“Hello”或其他。我有这个代码,它可以工作:
XPathDocument document = new XPathDocument(@"C:\test.xml");
XPathNavigator navigator = document.CreateNavigator();
XPathExpression expression;
expression = navigator.Compile("/karteikasten/vokabel[eng/item]/@stufe");
XPathNodeIterator iterator = navigator.Select(expression);
while (iterator.MoveNext())
{
XPathNavigator navigator2 = iterator.Current.Clone();
Console.WriteLine(navigator2.Value);
}
但这会选择整个文档中的每个“stufe”。
expression = navigator.Compile("/karteikasten/vokabel[eng/item='Hi']/@stufe");
不起作用。得到我想要的东西的正确模式是什么?
【问题讨论】:
-
表达式 = navigator.Compile("/karteikasten/vokabel[eng/item='Hi']/@stufe");为我工作。您使用的是哪个版本的 .NET?