使用XPath根据同一节点中的另一个属性查找节点中属性的值?

时间:2009-10-05 20:24:56

标签: c# .net xml xpath

我有一个构造得非常糟糕的xml文档 - 这些项目具有多个属性,而不是子节点。

例如:

<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);

其中make =上一个选择。显然,它没有用。

有没有办法使用XPath来做到这一点?

3 个答案:

答案 0 :(得分:6)

/makes/option[@year_start and @make="FORD"]/@year_start

您可以与[]内的AND / OR条件结合使用,然后询问属性。

答案 1 :(得分:1)

/makes/option[@make='FORD']/@year_start

...将获取make为“FORD”的选项下的所有year_start属性。如果存在一对一关系,则属性通常优于子元素 - 它们不需要详细的结束标记。

您也可以考虑使用linq to XML。

答案 2 :(得分:1)

我不知道这是否有效,但我认为你可以通过以下方式实现这一目标:


string.Format("/makes/option[@make={0}]//@year_start",make);