Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用XPATH从XML文档中选择特定值?_C#_Xml_Xpath_Sharepoint 2010 - Fatal编程技术网

C# 使用XPATH从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

我试图使用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 </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表达式,但是我得到了一个错误,而不是期望的输出。有没有更好更简单的方法?谢谢