Xpath使用Spring DSL查找XML的根

时间:2018-08-24 09:35:59

标签: xml xpath spring-dsl

我正在使用Spring DSL来访问网络服务器,

<route>
    <!-- 1 -->
    <from uri="...">
    <!-- 2 -->
    <to uri="...">
    <!-- 3 -->
    <choice>
        <when>
            <xpath></xpath>
            <to uri="...">
        </when>
        <when>
            <xpath></xpath>
            <to uri="...">
        </when>
    </choice>
</route>

<!-- 1 -->当端点命中时,   <!-- 2 -->向Web服务器发送请求,<!-- 3 -->检查基于Web服务器作为响应接收的根元素,基于该响应XML将发送到另一个端点

Web服务器将返回2条XML消息之一,例如,

<tns:roottag xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance xmlns:tns="http://example.com">
    <tns:leaftag>
        information
    </tns:leaftag>
</tns:roottag>

<tns:Parenttag xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance xmlns:tns="http://example.com">
    <tns:Childtag>
        information
    </tns:Childtag>
</tns:parenttag>

从Web服务器接收XML后,需要检查根目录,因为将对接收到的XML执行不同的操作,

参考了一些网站后,我知道可以使用spring DSL中的XPath

我的问题: 1.仅从响应XML中检索根标记名(如下所示),并根据基于原始响应XML执行不同操作的XPath进行检查

tns:Parenttag xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance xmlns:tns="http://example.com" ==> Parenttag

tns:roottag xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance xmlns:tns="http://example.com" ==> roottag

1 个答案:

答案 0 :(得分:1)

这仅在顶级元素为<tns:roottag>时匹配:

<xpath>/tns:roottag</xpath>

,并且仅当顶级元素是<tns:Parenttag>时,此匹配:

<xpath>/tns:Parenttag</xpath>

但是,在此之前,您需要声明tns前缀。您可以在<beans>顶部元素上完成此操作:

<beans
    xmlns="http://www.springframework.org/schema/beans"
    ...other namespace declarations...
    xmlns:tns="http://example.com"
>

确保名称空间URI与XML响应中的名称空间URI匹配。