微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么此XPath语句在libxml2中不起作用,但在其他xpath工具中却可以正常工作?

如何解决为什么此XPath语句在libxml2中不起作用,但在其他xpath工具中却可以正常工作?

此XPath语句对我来说似乎有效。

/wsdl:deFinitions/wsdl:types/xsd:schema/xsd:element[@name='GetBook']//*[@name='ID']/@type

实际上,如果我在此在线解析器http://xpather.com/中使用它,它将像冠军

我正在使用gcc的高山linux上使用libxml2

这是我的XPath行:

const char* xpath = "/wsdl:deFinitions/wsdl:types/xsd:schema/xsd:element[@name='GetBook']//*[@name='ID']/@type";

这是我从https://tomd.xyz/wsdl/那里获得演示WSDL的地方

解决方法

XML名称空间前缀(例如wsdlxsd)必须绑定到XML名称空间,并且声明这种绑定的方法取决于实现。如果您的XPath在未显式定义名称空间前缀的情况下工作,则该工具可能已经通过检查XML文档自动确定了名称空间前缀与名称空间的正确绑定。 XPath工具/库没有义务这样做,并且您不应期望这样做。

另请参阅How does XPath deal with XML namespaces?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。