XPath在C#中无法正常工作

XPath在C#中无法正常工作,第1张

概述我的代码不返回节点 XmlDocument xml = new XmlDocument();xml.InnerXml = text;XmlNode node_ = xml.SelectSingleNode(node);return node_.InnerText; // node_ = null ! 我很确定我的XML和Xpath是正确的. 我的Xpath:/ ItemLookupRes 我的代码不返回节点
Xmldocument xml = new Xmldocument();xml.InnerXml = text;XmlNode node_ =  xml.SelectSingleNode(node);return node_.InnerText; // node_ = null !

我很确定我的XML和Xpath是正确的.

我的Xpath:/ ItemLookupResponse / OperationRequest / RequestID

我的XML:

<?xml version="1.0"?><ItemLookupResponse xmlns="http://webservices.amazon.com/AWSECommerceService/2005-10-05">  <OperationRequest>    <RequestID>xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx</RequestID>    <!-- the rest of the xml is irrelevant -->  </OperationRequest></ItemLookupResponse>

由于某些原因,我的XPath返回的节点总是为空.有人可以帮忙吗?

解决方法 您的XPath几乎是正确的 – 它根本不考虑根节点上的默认XML命名空间!
<ItemLookupResponse     xmlns="http://webservices.amazon.com/AWSECommerceService/2005-10-05">             *** you need to respect this namespace ***

您需要考虑到这一点,并更改您的代码:

Xmldocument xml = new Xmldocument();xml.InnerXml = text;XmlnamespaceManager nsmgr = new XmlnamespaceManager(xml.nametable);nsmgr.Addnamespace("x","http://webservices.amazon.com/AWSECommerceService/2005-10-05");XmlNode node_ = xml.SelectSingleNode(node,nsmgr);

然后你的XPath应该是:

/x:ItemLookupResponse/x:OperationRequest/x:RequestID

现在,你的node_.InnerText绝对不会是NulL了!

总结

以上是内存溢出为你收集整理的XPath在C#中无法正常工作全部内容,希望文章能够帮你解决XPath在C#中无法正常工作所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1235843.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-06
下一篇2022-06-06

发表评论

登录后才能评论

评论列表(0条)

    保存