考虑以下XML
:
<Items>
<Item>
<Code>Test</Code>
<Value>Test</Value>
</Item>
<Item>
<Code>MyCode</Code>
<Value>MyValue</Value>
</Item>
<Item>
<Code>AnotherItem</Code>
<Value>Another value</Value>
</Item>
</Items>
我想选择Value
节点的Item
节点,其中Code
节点的值为MyCode
。我将如何使用XPath
?
我已尝试使用Items/Item[Code=MyCode]/Value
,但似乎无效。
答案 0 :(得分:7)
您的XML数据错误。 Value
代码没有正确匹配的结束标记,并且您的Item
代码没有匹配的结束标记(</Item>
)。
对于XPath,请尝试用引号括起要匹配的数据:
const string xmlString =
@"<Items>
<Item>
<Code>Test</Code>
<Value>Test</Value>
</Item>
<Item>
<Code>MyCode</Code>
<Value>MyValue</Value>
</Item>
<Item>
<Code>AnotherItem</Code>
<Value>Another value</Value>
</Item>
</Items>";
var doc = new XmlDocument();
doc.LoadXml(xmlString);
XmlElement element = (XmlElement)doc.SelectSingleNode("Items/Item[Code='MyCode']/Value");
Console.WriteLine(element.InnerText);
答案 1 :(得分:1)
你需要:
/Items/Item[Code="MyCode"]/Value
假设您修复了XML:
<?xml version="1.0"?>
<Items>
<Item>
<Code>Test</Code>
<Value>Test</Value>
</Item>
<Item>
<Code>MyCode</Code>
<Value>MyValue</Value>
</Item>
<Item>
<Code>AnotherItem</Code>
<Value>Another value</Value>
</Item>
</Items>