Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml local-name()在XPath中不起作用_Xml_Xpath - Fatal编程技术网

Xml local-name()在XPath中不起作用

Xml local-name()在XPath中不起作用,xml,xpath,Xml,Xpath,我的XML如下所示: <?xml version="1.0"?> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

我的XML如下所示:

<?xml version="1.0"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
                             http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
    <mime-mapping>
        <extension>123</extension>
        <mime-type>application/vnd.lotus-1-2-3</mime-type>
    </mime-mapping>
    <mime-mapping>
        <extension>3dml</extension>
        <mime-type>text/vnd.in3d.3dml</mime-type>
    </mime-mapping>
</web-app>

但似乎都不管用。我正在进行考试。此外,我正在使用我的工具进行测试,该工具需要XPath 1.0,但它也无法识别上述任何一项


有指针吗?

您的XPath很好。

问题出在你的工具()上

不要与具有默认命名空间的XML一起使用。这是不合规的。您可以在他们为您的XML发布的错误消息中看到:

XPath查询的默认(无前缀)命名空间URI始终为“” 并且无法将其重新定义为“”

兼容的XPath处理器将返回

<mime-type xmlns="http://java.sun.com/xml/ns/javaee">application/vnd.lotus-1-2-3</mime-type>
<mime-type xmlns="http://java.sun.com/xml/ns/javaee">text/vnd.in3d.3dml</mime-type>
并在XPath中使用它,而不是
local-name()

在不绕过名称空间的情况下正确地获得相同的结果


不幸的是,您无法在Freeformatter站点上定义名称空间前缀,但您可以在上以及使用上定义名称空间前缀。

请尝试其他测试仪。查找匹配项。但是,我使用的工具需要xpath 1.0。指定的xpath是否为1.0?该工具也与此xpath不匹配。我们可以用其他方式处理这个问题吗?是的,这些xpath是XPath1.0Ok。我会再试一次。@Alohci-我试过你建议的工具。但是,它也不匹配这三者中的任何一个?它给出以下错误:
错误-似乎没有提供XPath?
他们发布的消息没有错误。但在使用类似于
/*[local-name()='web-app']/*[local-name()='mime-mapping']/*[local-name()='mime-type']
@Alohci的xpath时,这是不相关的:他们发布的消息表达了一个与OP的情况相关的重要而不幸的限制。同样令人遗憾的是,该站点没有提供定义名称空间前缀的方法,这样XPath就可以在不使用
local-name()
@Alohci:您在评论中发布的替代方法的情况下正确编写,而不会遇到同样的问题。并且至少可以使用基于
local-name()
的XPath,就像我遇到的大多数其他XPath一样。谢谢。这就是tcserver xml文件(web.xml),我无法控制它本身。我会试试我的工具有什么问题。可能和测试工具有类似的问题,明白了。在SLES11SP3上,我们有xpath实用程序。这似乎不支持名称空间uri<代码>#xpath/usr/lib/vmware-vcops/tomcat-web-app/conf/web.xml/*[name()='web-app'和namespace-uri()='http://java.sun.com/xml/ns/javaee']/*[name()='mime-mapping'和namespace-uri()='http://java.sun.com/xml/ns/javaee']/*[name()='mime-type'和namespace-uri()='http://java.sun.com/xml/ns/javaee“]”命名空间uri:不支持函数
/*[name()='web-app']/*[name()='mime-mapping']/*[name()='mime-type']
/*[name()='web-app' and namespace-uri()='http://java.sun.com/xml/ns/javaee']/*[name()='mime-mapping' and namespace-uri()='http://java.sun.com/xml/ns/javaee']/*[name()='mime-type' and namespace-uri()='http://java.sun.com/xml/ns/javaee']
<mime-type xmlns="http://java.sun.com/xml/ns/javaee">application/vnd.lotus-1-2-3</mime-type>
<mime-type xmlns="http://java.sun.com/xml/ns/javaee">text/vnd.in3d.3dml</mime-type>
j="http://java.sun.com/xml/ns/javaee"
/j:web-app/j:mime-mapping/j:mime-type