我有一个构造得非常糟糕的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来做到这一点?
答案 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);