2013-03-08 1 views
0

Я новичок в Mule, так что несите меня. У меня есть следующий CSV-файл, который я получаю:csv to xml: не уверен, что лучший способ сделать это в Mule ESB

Company1,2,123 Street,Winchester,UK 
"000010","CHRISTINE","I","HAAS","A00","3978","1995-01-01","PRES",18,"F","1963-08-24",152750.00 
"000020","MICHAEL","L","THOMPSON","B01","3476","2003-10-10","MANAGER",18,"M","1978-02-02",94250.00 

Первая строка заголовка, содержит данные компании плюс количество записей (количество сотрудников) в CSV-файл (второй PARM в заголовке).

Теперь мне нужно, чтобы преобразовать его в следующий XML:

<?xml version="1.0" encoding="UTF-8"?> 
<tns:employeedata xmlns:tns="http://coxb.test.legstar.com/payrollemployee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://coxb.test.legstar.com/payrollemployee PayrollEmployee.xsd "> 
    <tns:employeecount>2</tns:employeecount> 
    <tns:employeelist> 
    <tns:employees> 
     <tns:employeenumber>000010</tns:employeenumber> 
     <tns:firstname>CHRISTINE</tns:firstname> 
     <tns:middleinitial>I</tns:middleinitial> 
     <tns:surname>HAAS</tns:surname> 
     <tns:department>A00</tns:department> 
    </tns:employees> 
    <tns:employees> 
     <tns:employeenumber>000020</tns:employeenumber> 
     <tns:firstname>MICHAEL</tns:firstname> 
     <tns:middleinitial>L</tns:middleinitial> 
     <tns:surname>THOMPSON</tns:surname> 
     <tns:department>B01</tns:department> 
    </tns:employees> 
    </tns:employeelist> 
</tns:employeedata> 

Я мог бы легко преобразовать этот файл без первой строки (заголовок). Моя проблема заключается в том, как обрабатывать заголовок и извлекать/преобразовывать «employeecount».

Любая помощь будет принята с благодарностью.

ответ

0

Самый простой способ сделать это - использовать DataMapper. Установите вход в CSV (используя образец CSV) и вывод в XML (используя ваш XSD или образец XML).

После того, как вы находитесь в режиме отображения, нажмите на поле вашего трудового коллектива. Вы увидите область, в которой вы можете ввести выражение. Существует не документированный параметр $in.0.__id, который вы можете использовать, который будет содержать количество записей. Обратите внимание, что это будет работать только для файлов CSV.

Относительно того, как пропустить первую строку, DataMapper делает это по умолчанию.

+0

Спасибо, Дэн. Я пробовал то, что вы предлагали, и работает на полпути. То, что я получаю в результате моего картографирования, таково: –

+0

Спасибо, Дэн. Я пробовал то, что вы предлагали, и работает на полпути. То, что я получаю в результате моего сопоставления, - это несколько корневых XML-структур «utileedata» с одним элементом «сотрудники» и поле «employeecount», увеличивающимся на единицу в каждой новой записи в выходном XML (аналогично выходному контуру в java). Я не получаю один корневой элемент «utileedata» с вложенным списком «сотрудников» и одним элементом для «employeecount». Я не уверен, что это моя неспособность правильно использовать DataMapper, или инструмент работает «как предусмотрено». –

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