2015-09-02 5 views
0

Я делаю POC в Data Weaver. Я не уверен, как объявить пространство имен ns0: на протяжении всего выходного файла xml. Ссылка: https://developer.mulesoft.com/docs/dataweave (Я видел примеры обработки ввода xml с пространством имен 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) в преобразование является правильным. Есть ли другой способ определить его?

ответ

5

Пространства имен объявляются с директивой %namespace <prefix> <uri>
Вы можете указать пространство имен элемента с <prefix>#<element>

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> 
+0

Спасибо !! Отлично!! – star

Смежные вопросы