2013-03-08 29 views
0

我是新來的騾子,所以忍受着我。我有我收到以下CSV文件:csv to xml:不確定最好的方式在騾子做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)。

進入映射視圖後,單擊您的employeecount字段。您會看到一個可以輸入表達式的區域。有一個未記錄的參數$in.0.__id,您可以使用它將包含記錄計數。請注意,這隻適用於CSV文件。

關於如何跳過第一行,DataMapper默認執行此操作。

+0

謝謝丹。我嘗試了你的建議,並且它工作的一半。我得到的結果是: – 2013-03-12 13:15:35

+0

謝謝丹。我嘗試了你的建議,並且它工作的一半。我通過映射得到的結果是,在輸出XML中的每個新條目(類似於java中的循環輸出)中,具有一個「employees」元素和「employeecount」字段的多個根XML結構「employeedata」增加了一個。我沒有得到一個「employeesedata」根元素,其中嵌套了「employees」列表和「employeecount」元素。 我不確定這是否是我無法正確使用DataMapper,或者該工具「按設計」工作。 – 2013-03-12 13:27:11