【发布时间】:2019-09-27 07:23:58
【问题描述】:
考虑以下 XML 正文;
<whitelist
whitelist_entry_nb="4"
whitelist_size="4000">
<locations>
<location
path="kate-api.gateway.zigbee-network.components.{component}.whitelist.{whitelist-entry}">
<var-fields>
<var-field
key="component"
value="F9BA2F5E2E1EBE1358F70691990F0918" />
<var-field
key="whitelist-entry"
value="8.042620EA5A3380" />
</var-fields>
</location>
<location
path="kate-api.gateway.zigbee-network.components.{component}.whitelist.{whitelist-entry}">
<var-fields>
<var-field
key="component"
value="F9BA2F5E2E1EBE1358F70691990F0918" />
<var-field
key="whitelist-entry"
value="8.043D147AA44A80" />
</var-fields>
</location>
</whitelist>
Xpath 是:
/whitelist/locations/location/var-fields/var-field[@key="whitelist-entry" and @value="8.0440147AA44A80"]
Xpath 结果必须如下:
Element='<var-field key="whitelist-entry" value="8.0440147AA44A80"/>'
我想要做的是将此 xpath 传递给 XPathEvaluate 方法并到达 XPath 结果元素内部的属性值,即“白名单”和“8.0440147AA44A80”。我想检查这些值是否存在于 xml 中。
我正在尝试将此 xpath 传递给 XpathEvaluate 方法,如下所示:
var doc = XDocument.Parse(System.Web.HttpUtility.HtmlDecode(response.Body));
var result = doc.XPathEvaluate(matchString[i].xpath);
*matchString 来自 Json 文件
XPathEvaluate 方法返回一个布尔值、字符串或 IENumerable; 我可以在这里控制布尔结果如下:
if(result is bool){
resultBool = (bool) result;
if(resultBool)
{
Report.Success("Content " + matchString[i].xpath + "is in reponse");
}
else
{
Report.Failure("Content " + matchString[i].xpath + "is not in reponse");
}
}
我希望输出是 Element=''。 我将能够使用 SelectNode 方法等从这里获取属性值。
【问题讨论】: