使用XPath根据同一节点中的另一个属性来查找节点中属性的值?
问题描述:
我有一个xml文档构建得很差 - 而不是子节点,这些项目有多个属性。使用XPath根据同一节点中的另一个属性来查找节点中属性的值?
例如:
<makes>
<option make="FORD" year_start="1950" year_end="2009" />
<option make="CHEVROLET" year_start="1965" year_end="2009" />
...
</makes>
我试图使用XPath来选择匹配某种属性的所有节点的其他属性的值。我使用基于先前选择的2 xml文档中的值填充3个asp下拉菜单。我正在使用.net/c#
例如: 对于具有值x的make属性的所有选项节点,查找year_start的值。
我想是这样的:
yearListData.XPath = string.Format("/makes/option[@year_start] and [@make={0}]", make);
其中做出=前选择。显然,它没有工作。
有没有使用XPath来做到这一点的方法?
答
/makes/option[@year_start and @make="FORD"]/@year_start
你可以用和/或[
和]
内部条件相结合,然后询问属性。
答
/makes/option[@make='FORD']/@year_start
...将让您在所有选项中找到所有year_start属性,其中make是“FORD”。如果存在一对一关系,则属性通常比子元素更可取 - 它们不需要详细的结束标记。
您也可以将linq转换为XML。
答
我不知道这是否会工作,但我认为你可以做到与类似:
string.Format("/makes/option[@make={0}]//@year_start",make);
+0
你需要一些引号 – 2009-10-05 21:28:35
于断言的@year_start可能是矫枉过正,因为它不能返回没有按什么不存在,但它会给出正确的答案。 – 2009-10-05 21:28:02
我把它留在那里,以便将表达式可以在谓词中组合起来。 – 2009-10-05 21:29:02
这为我工作,但我仍然有问题;你能推荐一个好的.net/c#&xml资源吗? – 2009-10-06 13:05:50