我正在尝试使用 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/