Mulesoft XML dataweave устанавливает пространство имен для атрибутов - PullRequest
0 голосов
/ 09 января 2020

Я пытаюсь сформировать запрос xml, который имеет некоторые атрибуты. Атрибуты также имеют некоторое пространство имен. Может кто-нибудь помочь мне с правильным синтаксисом сформировать правильный xml запрос.

например

     Sample xml

    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:ns1="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns:ns2="http://www.w3.org/2001/XMLSchema"
     <soapenv:Header/>
        <soapenv:Body>
        <Request>
        <soapenv:age ns1:type="ns2:string">1234</soapenv:age>
        </Request>
    </soapenv:Body>
    </soapenv:Envelope> 


    dataweave
    %dw 1.0
    %output application/xml
    {
     ns1#age @(ns1#type: "ns2#string"): "1234"
     }

1 Ответ

0 голосов
/ 09 января 2020
%dw 1.0
%output application/xml encoding="utf-8"
%namespace soapenv http://schemas.xmlsoap.org/soap/envelope/
%namespace ns1 http://www.w3.org/2001/XMLSchema-instance
%namespace ns2 http://www.w3.org/2001/XMLSchema
---
soapenv#Envelope: {
  soapenv#Header  : {
      soapenv#Body: {
        Request: {
          soapenv#age @(ns1#type: "ns2#string"): "1234"
        }
    }
  }
}

Выход:

<?xml version='1.0' encoding='utf-8'?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
  <soapenv:Header>
    <soapenv:Body>
      <Request>
        <soapenv:age xmlns:ns1="http://www.w3.org/2001/XMLSchema-instance" ns1:type="ns2#string">1234</soapenv:age>
      </Request>
    </soapenv:Body>
  </soapenv:Header>
</soapenv:Envelope>

Обратите внимание, что ns2 не используется преобразованием, поэтому он не будет излучаться на выходе. Если вам нужно, чтобы он появился, вам нужно добавить фиктивный атрибут к некоторому элементу с ns2 в качестве пространства имен (пример @(ns2#dummy:'').

...