c# - 使用 XPATH 从 XML 文档中选择特定值?

标签 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 </Provider>
</Check>
<Check id="adsl">
<Linespeed>2048 </Linespeed>
<Provider>BT ADSL </Provider>
</Check>
</Checks>
</Results>

在代码后面使用 XPATH 我希望能够选择 <Linespeed><Provider>仅限id=adsl ,然后将该值存储在字符串变量中以供以后使用。我想在不使用单独的 xslt 样式表的情况下实现此目的。对此的任何帮助将不胜感激!

提前致谢

感谢大家的帮助,使用 xpath 表达式,我现在想实际使用它,如下所示:

//Creating an XPATH epression
String strExpression1;
strExpression1 = "Results/Checks/Check[@id = 'adsl']/Linespeed";


//Loading the xml document
XmlDocument doc;
doc = new XmlDocument();
doc.LoadXml(tmp);

//Create an XmlNamespaceManager to resolve the default namespace.
XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
nsmgr.AddNamespace("bk", "urn:schemas-microsoft-com:xslt");

//Selecting Linespeed from Check id='adsl'
XmlNode Check;
XmlElement root = doc.DocumentElement;
Check = root.SelectSingleNode(strExpression1, nsmgr);


//Assigning the the results of the XPATH expression to the string variable Linespeedval
string Linespeedval = Check.ToString();

//Adding a control to display the xpath results of the xml query
AvailabilityCheckerResults2.Controls.Add(new 
LiteralControl(Linespeedval));

理论上,我应该能够看到在名为“AvailabilityCheckerResults2”的 PlaceHolder 内部页面上显示的值,但我收到了错误。有没有办法将 xpath 表达式的结果分配给字符串变量?再次感谢

最佳答案

要选择的 xpath 表达式 <Linespeed/><Provider/>对于 <Check id="adsl"/>

是://Linespeed[ancestor::Check[@id = 'adsl']] <-- 这将选择其祖先是 id = adsl 的检查元素的所有 Linespeed 节点

或者你可以使用类似的东西:

/Results/Checks/Check[@id = 'adsl']/Linespeed 

这将选择线路速度,该线路速度是文档中带有 @id = 'adsl' 的 Check 的子项。

对于提供商,您可以使用相同的方法。

关于c# - 使用 XPATH 从 XML 文档中选择特定值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7981266/

相关文章:

c# - LINQ 中的日期格式

c# - 如何在 C# 中表示国家和语言?

c# - 在 C# 中使用 xpath,帮助

xpath - 循环抓取同一页面上的多个元素,同时单独存储它们

c# - URL 编码后,数字 1 随机附加到我的 JWT key 的末尾

c# - 如何在泛型方法中有一个匿名返回类型?(就像 linq 中的 select 方法)

xml - 提取标签名称、属性及其值

python-3.x - Selenium 网络驱动程序 : list all elements of "input" drop down and select a different element

xml - 如何限制XQuery结果中的返回顺序?

java - TransformerFactory.newTransformer 在测试期间变得更慢