Xpath 使用 Spring DSL 查找 XML 的根目录

Xpath to find the root of the XML using 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 --> 当 Endpoint 命中时, <!-- 2 --> 向网络服务器发送请求,<!-- 3 --> 检查作为响应从网络服务器收到的根元素,基于该响应XML 将发送到另一个端点

Web 服务器将 return 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>

从网络服务器收到 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

只有当顶级元素是 <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 匹配。