我正在使用http://xpath.online-toolz.com/tools/xpath-editor.php 作为在线XPath评估者。我尝试了其他一些但是它们都是一样的
我的xml中有以下内容: -
<?xml version="1.0"?>
<test xmlns="abc">
</test>
现在XPath查询
/
.
给我输出: -
<test xmlns="abc">
</test>
然而,查询
test
/test
//test
根本不给我任何输出。我正在做一个非常基本的错误,但我无法弄清楚是什么。我认为它与命名空间有关,但将查询更改为
abc:test
也无济于事,因为它会产生无效表达式错误。
我正在使用http://www.w3schools.com/xpath http://www.tizag.com/xmlTutorial/xpathtutorial.php&amp; http://oreilly.com/perl/excerpts/system-admin-with-perl/ten-minute-xpath-utorial.html
作为XPath教程的源代码。
答案 0 :(得分:1)
目标文件中没有明确的名称空间前缀,但您仍需要满足它们。你可以写
/*[local-name()='test' and namespace-uri()='abc']
您的“abc”是namespaceURI,而不是命名空间前缀。它可能是无效的,因为大多数工具会测试它的URI形式,如
http://www.abc.com/
更好的文件是:
<test xmlns="http://www.abc.com">
</test>
当您的查询为:
/*[local-name()='test' and namespace-uri()='http://www.abc.com/']
我已经在您的网站上对此进行了测试,但确实有效。
表格
abc:test
将取决于将前缀abc
设置为'http://www.abc.com/'
的机制,并且网站上似乎没有机制