
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#中无法正常工作所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)