2015-12-21 2 views
0

У меня есть преобразование в передаче данных.Проблема преобразования DataWeave в esb mule

Я получаю входные данные из базы данных Mysql. Тип входной полезной нагрузки - List-Map. Мой текстовый редактор имеет код ниже.

%dw 1.0 
%namespace ns1 urn:abc:api:Components 
%output application/xml 
--- 
ns1#"ItemRequest":{ 
    ns1#"Requester": 
     ns1#ac: payload.time_max, 

     ns1#"ErrorLanguage": "en_US", 
     ns1#"WarningLevel": "High" 
} 

Мой выход

<?xml version='1.0' encoding='UTF-8'?> 
<ns1:ItemRequest xmlns:ns1="urn:abc:api:Components"> 
    <ns1:Requester> 
    <ns1:ac> 
     <time_max>1</time_max> 
    </ns1:ac> 
    </ns1:Requester> 
    <ns1:ErrorLanguage>en_US</ns1:ErrorLanguage> 
    <ns1:WarningLevel>High</ns1:WarningLevel> 
</ns1:AddItemRequest> 

Я не знаю, почему я получаю «элемент в моем выходе с„тег, созданный under'ac time_max“. «Time_max» - это имя столбца в таблице MySQL. Но я не хочу добавлять столбец в выходной XML. Как мы можем избежать создания этого тэга?

Ожидаемый выход

<?xml version='1.0' encoding='UTF-8'?> 
<ns1:ItemRequest xmlns:ns1="urn:abc:api:Components"> 
    <ns1:Requester> 
    <ns1:ac>1</ns1:ac> 
    </ns1:Requester> 
    <ns1:ErrorLanguage>en_US</ns1:ErrorLanguage> 
    <ns1:WarningLevel>High</ns1:WarningLevel> 
</ns1:AddItemRequest> 

ответ

0

я решил проблему, введя ниже код.

%dw 1.0 
%namespace ns1 urn:abc:api:Components 
%output application/xml 
--- 
ns1#"ItemRequest":{ 
    ns1#"Requester": 
     ns1#ac: payload[0].time_max, 
     ns1#"ErrorLanguage": "en_US", 
     ns1#"WarningLevel": "High" 
} 

Нижняя строка фрагмента выполнена магией. Я включил значения индекса массива.

ns1#ac: payload[0].time_max 
+0

Похоже, ваша проблема заключалась в том, что ввод был списком карт, который мы часто получаем как вывод из коннектора базы данных. Ваш оригинальный DWL записывается в предположении, что вход представляет собой карту. Возможно, добавить схему ввода в вопрос для будущих читателей? –

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

  • Нет связанных вопросов^_^