我正在使用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
答案 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匹配。