C# 使用XPATH从XML文档中选择特定值?
我试图使用XPath从xml文档中选择特定值。xml存储在字符串变量“tmp”中。此xml是在外部API上执行的查询的结果 示例XML内容:C# 使用XPATH从XML文档中选择特定值?,c#,xml,xpath,sharepoint-2010,C#,Xml,Xpath,Sharepoint 2010,我试图使用XPath从xml文档中选择特定值。xml存储在字符串变量“tmp”中。此xml是在外部API上执行的查询的结果 示例XML内容: <?xml version="1.0" encoding="ISO-8859-1"?> <Results> <Checks> <Check id="wbc"> <Linespeed>6000 </Linespeed> <Provider>BT WBC </Provid
<?xml version="1.0" encoding="ISO-8859-1"?>
<Results>
<Checks>
<Check id="wbc">
<Linespeed>6000 </Linespeed>
<Provider>BT WBC </Provider>
</Check>
<Check id="adsl">
<Linespeed>2048 </Linespeed>
<Provider>BT ADSL </Provider>
</Check>
</Checks>
</Results>
理论上,我应该能够看到在名为“AvailabilityCheckerResults2”的占位符内的页面上显示的值,但我得到了一个错误。有没有办法将xpath表达式的结果分配给字符串变量?再次感谢尝试将此作为起点
var elements = XElement.Parse(tmp).Elements("Checks").Elements("Check").Where (xe => xe.Attribute("id").Value=="adsl");
尝试
/Results/Checks/Check[@id='adsl']/Linespeed
或/Results/Checks/Check[@id='adsl']]/Provider
(您想要选择什么,您错过了它?为
选择
的xpath表达式
is://Linespeed[祖先::检查[@id='adsl']]
我希望能够仅为以下对象选择
和
id=adsl
使用:
/*/*/Check[@id = 'adsl']/*[self::Linespeed or self::Provider]
/*/*/Check[@id = 'adsl']/*
这将选择任何Linespeed
或Provider
元素,这些元素是Check
的子元素,其id
属性的字符串值为“adsl”
,并且是XML文档顶部元素的子元素
如果保证检查
只能有线路速度
或提供程序
子项,则上述内容可以简化为:
/*/*/Check[@id = 'adsl']/*[self::Linespeed or self::Provider]
/*/*/Check[@id = 'adsl']/*
这将选择任何元素,该元素是检查的子元素,其id
属性的字符串值为“adsl”
,并且是XML文档顶部元素的子元素
如果只想选择Linespeed
元素,请使用:
/*/*/Check[@id = 'adsl']/Linespeed
/*/*/Check[@id = 'adsl']/Provider
如果只想选择提供程序
元素,请使用:
/*/*/Check[@id = 'adsl']/Linespeed
/*/*/Check[@id = 'adsl']/Provider
谢谢,我添加了额外的代码来包含这个xpath表达式,但是我得到了一个错误,而不是期望的输出。有没有更好更简单的方法?谢谢