【问题标题】:How to declare namespace in response xml如何在响应 xml 中声明命名空间
【发布时间】:2015-11-25 22:11:01
【问题描述】:

我正在 Data Weaver 中进行 POC。我不确定如何在整个输出 xml 中声明命名空间 ns0:。参考链接:https://developer.mulesoft.com/docs/dataweave(我已经看到使用命名空间 1.4.3 处理输入 xml 的示例,但我正在寻找输出 xml)。

输入 Xml:

    <?xml version="1.0" encoding="UTF-8"?>
    <Records>
      <storenumber>12</storenumber>
      <calculated>false</calculated>
      <subTotal>12</subTotal>
   <Records>

预期输出 xml:

<?xml version='1.0' eencoding="UTF-8" standalone="yes"?>
 <ns0:orders 
       xmlns="ns2=urn:test.com:common:v1">
  <ns0:order>
    <ns0:StoreID>12</ns0:StoreID>
    <ns0:Total>false</ns0:Total>
   </ns0:order>
  </ns0:orders>

DataWeaver 转换

%dw 1.0
 %output application/xml
 %var baseurl="ns2=urn:test.com:common:v1"
 ---
 orders @(xmlns:baseurl): {
 order: {
  StoreID: payload.Records.storenumber,
  Total: payload.Records.calculated
  }
}

我相信@(xmlns:baseurl) 在转换中是正确的。有没有其他的定义方式?

【问题讨论】:

    标签: mule mule-studio mule-component mule-el dataweave


    【解决方案1】:

    命名空间是用指令%namespace &lt;prefix&gt; &lt;uri&gt;声明的
    您可以使用&lt;prefix&gt;#&lt;element&gt; 指定元素的命名空间

    DataWeave 转换

    %dw 1.0
    %output application/xml
    %namespace ns0 urn:test.com:common:v1
    ---
    ns0#orders: {
      ns0#order: {
        ns0#StoreID: payload.Records.storenumber,
        ns0#Total: payload.Records.calculated
      }
    }
    

    输出

    <?xml version='1.0' encoding='UTF-8'?>
    <ns0:orders xmlns:ns0="urn:test.com:common:v1">
      <ns0:order>
        <ns0:StoreID>12</ns0:StoreID>
        <ns0:Total>false</ns0:Total>
      </ns0:order>
    </ns0:orders>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-27
      • 2023-03-17
      • 1970-01-01
      • 1970-01-01
      • 2015-11-25
      • 2010-10-27
      • 2015-06-03
      相关资源
      最近更新 更多