Рассмотрим следующее тело 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"/>'
Что я хочуdo передает этот 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 возвращает тип bool, string или IENumerable;Что я могу контролировать результат bool здесь следующим образом:
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 и т. Д.