有什么方法可以在 Mule 4 应用程序中集中自定义 XML 命名空间吗?

问题描述 投票:0回答:1

应用程序和运行时版本: Mule 4 应用程序,带有 XML 模块。

我正在尝试创建具有许多自定义 xml 命名空间的 mule 应用程序。看来前缀应该在本地声明,像这样,

%dw 2.0
output application/xml
ns orders http://www.acme.com/shemas/Orders
ns stores http://www.acme.com/shemas/Stores
---
root:
    orders#orders: {
        stores#shipNodeId: "SF01",
        stores#shipNodeId @(shipsVia:"LA01"): "NY03"
    }

有什么方法可以集中自定义 XML 命名空间吗?


1. 尝试了一些东西: 从自定义 Dataweave 模块导入 xml 命名空间

我尝试创建一个自定义模块并声明命名空间并将其导入到我的 dataweave 中,但似乎前缀应该在本地声明

命名空间.dwl

ns myNs1 http://namespaces/my1
ns myNs2 http://namespaces/my2

数据编织:

%dw 2.0
import * from modules::Namespaces
output application/java
---
{
    body: {
        myNs1#Response: {
            outcome: 'ACCEPTED'
        }
    } write "application/xml"
}

但这不起作用,这又需要在本地声明前缀,类似这样。在本地声明前缀后,这可以工作。

%dw 2.0
import * from modules::Namespaces
output application/java

var myNs1Local = myNs1 as Namespace

---
{

    body: {
        myNs1Local#Response: {
            outcome: 'ACCEPTED'
        }
    } write "application/xml"
}

在本地声明前缀后,这可以工作。


2. 我试图理解此处记录的名称空间目录: https://docs.mulesoft.com/xml-module/latest/xml-xpath

文档解释了如何将其与 Xpaths 一起使用,但不确定如何在创建 XML 时使用它,找不到任何文档

<xml-module:namespace-directory name="fullNs"> 
    <xml-module:namespaces>
        <xml-module:namespace prefix="soap" uri="http://schemas.xmlsoap.org/soap/envelope/"/>
        <xml-module:namespace prefix="mule" uri="http://simple.component.mule.org/"/>
    </xml-module:namespaces>
</xml-module:namespace-directory>

<flow name="xpathWithFullNs">
    <xml-module:xpath-extract
      xpath="/soap:Envelope/soap:Body/mule:echo/mule:echo"
      namespaceDirectory="fullNs"/> 
</flow>
mule dataweave mulesoft mule4
1个回答
0
投票

修复小错误后,第一种方法奏效了。

创建了一个自定义模块并声明了命名空间并将其导入到我的 dataweave 中,无需在本地 dataweave 中再次声明前缀。

命名空间.dwl

ns myNs1 http://namespaces/my1
ns myNs2 http://namespaces/my2

数据编织:

%dw 2.0
import * from modules::Namespaces
output application/java
---
{
    body: {
        myNs1#Response: {
            outcome: 'ACCEPTED'
        }
    } write "application/xml"
}
© www.soinside.com 2019 - 2024. All rights reserved.