C# 基于同一节点中的另一个属性,使用XPath查找节点中某个属性的值?

C# 基于同一节点中的另一个属性,使用XPath查找节点中某个属性的值?,c#,.net,xml,xpath,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> 其中make=上一个选择。显然,它没有起作用 有没有一种使用XPath的方法可以做到这一点

我有一个构造非常糟糕的xml文档——这些项没有子节点,而是具有多个属性

例如:

<makes>
<option make="FORD" year_start="1950" year_end="2009" />
<option make="CHEVROLET" year_start="1965" year_end="2009" />
...
</makes>
其中make=上一个选择。显然,它没有起作用

有没有一种使用XPath的方法可以做到这一点

/makes/option[@make='FORD']/@year_start
…将在品牌为“福特”的选项下为您提供全年启动属性。如果存在1对1关系,属性通常比子元素更可取——它们不需要详细的结束标记

您也可以考虑LINQ to XML. < /P>

/makes/option[@year_start and @make="FORD"]/@year_start
…将在品牌为“福特”的选项下为您提供全年启动属性。如果存在1对1关系,属性通常比子元素更可取——它们不需要详细的结束标记

您也可以考虑LINQ to XML. < /P>

/makes/option[@year_start and @make="FORD"]/@year_start
您可以结合
[
]
中的和/或条件,然后请求属性


您可以结合
[
]
中的和/或条件,然后请求属性。

我不知道这是否可行,但我认为您可以通过以下方式实现:


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

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


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

谓词中的@year\u start可能有些过分,因为它不能返回不存在的东西,但它会给出正确的答案。我把它放在那里是为了说明表达式可以在谓词中组合的观点。这对我来说很有效,但我仍然有问题;你能推荐一个好的.net/c#&xml资源吗?谓词中的@year#start可能有些过分,因为它不能返回不存在的东西,但它会给出正确的答案。我把它放在那里是为了让大家明白表达式可以组合到谓词中。这对我来说很有效,但我仍然有问题;你能推荐一个好的.net/c#&xml资源吗?