我的XPath有什么问题?

时间:2010-01-27 16:42:34

标签: c# xml xpath xmldocument

这里我有xml:

<root>
    <field ...>offer</field>
    <field type="ferrari" ...>car</field>
    <field ...>company</field>
    <field ...>whatever</field>
</root>

我希望通过提取元素来了解«car»的«type»。我想到这样的事情:

/root[field='car']/field (or /root[field='car'])

就足够了,但当我尝试执行我的C#代码时:

XmlDocument document = new XmlDocument();
document.InnerXml = "..."; // xml of above
XmlNode node = document.DocumentElement.SelectSingleNode("... xpath of above ...");

对象«node»它总是包含第一个子元素«field»(提供),而在SelectNodes(“... same xpath ...”)的情况下,返回所有元素«field»忽略条件

有什么问题? XPath错了吗?

1 个答案:

答案 0 :(得分:2)

/root/field[text()='car']/@type

将带回一个节点,该节点表示文本值为“car”的元素“field”的属性“type”。这个XmlNode的值将是“ferrari”。

/root/field[text()='car']

将带回一个表示元素“field”的节点(其文本值为“car”),您可以通过编程方式获取type属性:

XmlNode fieldNode = document.DocumentElement.SelectSingleNode(@"/root/field[text()='car']");
string type = fieldNode.Attributes["type"].Value;
//type == "ferrari"