You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在WSO2中使用XPath提取属性内XML的Origin节点或值

在WSO2中提取XML里的Origin节点或其值的方法

你有一个名为body的属性,其值为如下XML内容:

<?xml version="1.0" encoding="UTF-8"?>
<request xmlns="http://api-v1.gen.mm.example.com/mminterface/request">
   <Transaction>
      <Origin>country 1</Origin>
   </Transaction>
</request>

以下是在WSO2中通过XPath提取目标内容的具体方法:

一、提取完整的Origin节点

方法1:绑定命名空间(推荐)

先在序列(Sequence)中声明命名空间前缀,将ns绑定到XML的目标命名空间:

<sequence xmlns:ns="http://api-v1.gen.mm.example.com/mminterface/request" name="ExtractOriginNode">
  <!-- 后续中介逻辑 -->
</sequence>

使用如下XPath表达式提取节点:

//ns:Transaction/ns:Origin

提取结果:

<Origin>country 1</Origin>

方法2:不绑定命名空间(兼容场景)

如果无法提前声明命名空间,可通过local-name()匹配节点名称:

//*[local-name()='Transaction']/*[local-name()='Origin']

提取结果与方法1一致。

二、提取Origin节点的文本值

方法1:绑定命名空间(推荐)

使用带text()的XPath表达式:

//ns:Transaction/ns:Origin/text()

提取结果:

country 1

方法2:不绑定命名空间

同样通过local-name()匹配节点:

//*[local-name()='Transaction']/*[local-name()='Origin']/text()

提取结果与方法1一致。

实际使用示例(Property中介)

在WSO2中介中,可通过Property节点将提取结果保存到新属性:

<sequence xmlns:ns="http://api-v1.gen.mm.example.com/mminterface/request" name="ExtractOriginSequence">
  <!-- 提取节点值到OriginValue属性 -->
  <property name="OriginValue" expression="//ns:Transaction/ns:Origin/text()" scope="default" type="STRING"/>
  <!-- 提取完整节点到OriginNode属性 -->
  <property name="OriginNode" expression="//ns:Transaction/ns:Origin" scope="default" type="OM"/>
</sequence>

内容的提问来源于stack exchange,提问作者NxN

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 12:03:30