Сопоставление XML-списков Mule с картой Java (ключ, значение) для CRM Dynamics онлайн

У меня есть входные данные XML, которые необходимо преобразовать в карту Java, чтобы использовать их в качестве входных данных для онлайн-коннектора CRM (для создания учетной записи).

Пример ввода: я даю только часть xml, с которой у меня возникли проблемы

<account>
 <identification>
 <accountId>String</accountId>
 </identification>

 <addresses>
     <address>
         <type>type1</type>
         <name>name1</name>
         <street>street1</street>
         <communication>
             <phone>phone1</phone>
             <phoneExtension>phoneExtension1</phoneExtension>
             <phoneCountry>phoneCountry1</phoneCountry>
             <fax>fax1</fax>
             <faxExtension>faxExtension1</faxExtension>
             <faxCountry>faxCountry1</faxCountry>
             <email>email1</email>
             <website>website1</website>
         </communication>
         </address>
     <address>
         <type>type2</type>
         <name>name2</name>
         <street>street2</street>
         <communication>
             <phone>phone2</phone>
             <phoneExtension>phoneExtension2</phoneExtension>
             <phoneCountry>phoneCountry2</phoneCountry>
             <fax>fax2</fax>
             <faxExtension>faxExtension2</faxExtension>
             <faxCountry>faxCountry2</faxCountry>
             <email>email1</email>
             <website>website2</website>
         </communication>
         </address>
     <address>
         <type>type3</type>
         <name>name3</name>
         <street>street3</street>
         <communication>
             <phone>phone3</phone>
             <phoneExtension>phoneExtension3</phoneExtension>
             <phoneCountry>phoneCountry3</phoneCountry>
             <fax>fax3</fax>
             <faxExtension>faxExtension3</faxExtension>
             <faxCountry>faxCountry3</faxCountry>
             <email>email3</email>
             <website>website3</website>
         </communication>
         </address>
 </addresses>

As you can see I have three adresses inside which is an array of address and All has same tags .

Я хочу преобразовать этот xml в карту Java, чтобы создать учетную запись в CRM Dynamics онлайн. Но проблема в том, что в CRM у нас совершенно другая структура. У нас есть адреса в виде пар ключ-значение. Итак, сверху ввод адреса у нас есть ниже отображение

address1_type : type1
address1_name : name1
address1_street : street1
address1_phone : phone1
address1_phoneExtension : phoneExtension1
address1_phoneCountry : phoneCountry1
address1_fax : fax1
address1_faxExtension : faxExtension1
address1_faxCountry : faxCountry1
address1_email : email1
address1_website : website1

address2_type : type2
address2_name : name2
address2_street : street2
address2_phone : phone2
address2_phoneExtension : phoneExtension2
address2_phoneCountry : phoneCountry2
address2_fax : fax2
address2_faxExtension : faxExtension2
address2_faxCountry : faxCountry2
address2_email : email2
address2_website : website2

address3_type : type3
address3_name : name3
address3_street : street3
address3_phone : phone3
address3_phoneExtension : phoneExtension3
address3_phoneCountry : phoneCountry3
address3_fax : fax3
address3_faxExtension : faxExtension3
address3_faxCountry : faxCountry3
address3_email : email3
address3_website : website3

Есть ли способ преобразовать массив входных адресов в требуемые значения ключей карты? Я ищу способ сделать это с помощью Dataweave, если это возможно.


person user3084212    schedule 11.10.2016    source источник
comment
Это не сервис написания кода. Что вы пробовали до сих пор? Разместите свой код! Что случилось, когда вы его запустили? Что вы ожидали вместо этого? С чем конкретно у вас проблемы?   -  person Robert    schedule 11.10.2016
comment
Кстати, я пытаюсь преобразовать списки XML в карту Java с помощью dataweave. Как вы знаете, у java-карты есть уникальные ключи, но список xml будет иметь те же ключи в dataweave, но я хочу, чтобы были созданы динамические ключи, как вы можете видеть во второй части вопроса ... пожалуйста, дайте мне знать, если он недостаточно подробный   -  person user3084212    schedule 11.10.2016


Ответы (1)


Я нашел решение. Это может быть полезно для кого-то

преобразование возможно при просмотре списка и создании ключей динамической карты в сети данных с определенным индексом.

 %dw 1.0
%output application/java
---
{ //tells DW that output should be object i.e. HashMap
 ( //tells DW to use key-value from below mapping
     payload.account.addresses map ((value,index) -> {
         ("address" ++ (index+1) ++ "_type"): value.type, // Parenthesis around key tells DW to evaluate contents and use the result as key
         ("address" ++ (index+1) ++ "_name"): value.name,
         ("address" ++ (index+1) ++ "_street"): value.street
     })
   )
}
person user3084212    schedule 11.10.2016