Select C# 的 Linq to XML 父元素的属性值
Select attribute value of parent element in Linq to XML of C#
我正在使用 C# 的 Linq to XML。我正在尝试使用 Xpath 找出父属性值。当我 运行 它反对 XML 时,这个 Xpath 工作但不知何故在 Linq 中给 XML 一个错误。
错误是:
Expression must evaluate to a node-set.
这里是 XML:
<items>
<item id="Carrier_ProductBase_Data_3_0_0_0" description="Carrier ProductBase Data (3.0.0.0)" versionDate="2006-12-01">
<keys>
<key name="versionID" value="Carrier_ProductBaseData_00_10"/>
<key name="family" value="DCTTemplates"/>
<key name="lob" value="CarrierAdmin"/>
<key name="state" value="Admin"/>
<key name="version" value="3.0.0.0"/>
<key name="effectiveDateNew" value="2006-12-01"/>
<key name="effectiveDateRenewal" value="2006-12-01"/>
<key name="masterID" value="DuckCreekTech_Master_US_00_20"/>
<key name="productCode" value="Data"/>
</keys>
</item> </items>
`XDocument xdoc = XDocument.Parse(this.DCTResponseXML);
var s = xdoc.XPathSelectElement("//*[@name='productCode'][@value='Data']/../../").Attribute("id").Value;`
xpath 不能包含单个斜杠,并且您要向上一级。应该是
var xpath = @"//*[@name='productCode'][@value='Data']//..//..";
var s = xdoc.XPathSelectElement(xpath). ...
我正在使用 C# 的 Linq to XML。我正在尝试使用 Xpath 找出父属性值。当我 运行 它反对 XML 时,这个 Xpath 工作但不知何故在 Linq 中给 XML 一个错误。
错误是:
Expression must evaluate to a node-set.
这里是 XML:
<items>
<item id="Carrier_ProductBase_Data_3_0_0_0" description="Carrier ProductBase Data (3.0.0.0)" versionDate="2006-12-01">
<keys>
<key name="versionID" value="Carrier_ProductBaseData_00_10"/>
<key name="family" value="DCTTemplates"/>
<key name="lob" value="CarrierAdmin"/>
<key name="state" value="Admin"/>
<key name="version" value="3.0.0.0"/>
<key name="effectiveDateNew" value="2006-12-01"/>
<key name="effectiveDateRenewal" value="2006-12-01"/>
<key name="masterID" value="DuckCreekTech_Master_US_00_20"/>
<key name="productCode" value="Data"/>
</keys>
</item> </items>
`XDocument xdoc = XDocument.Parse(this.DCTResponseXML);
var s = xdoc.XPathSelectElement("//*[@name='productCode'][@value='Data']/../../").Attribute("id").Value;`
xpath 不能包含单个斜杠,并且您要向上一级。应该是
var xpath = @"//*[@name='productCode'][@value='Data']//..//..";
var s = xdoc.XPathSelectElement(xpath). ...