这里我有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错了吗?
答案 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"