2014-07-07 1 views

답변

1

당신은

<smooks:transformer 
     name="csvToXmlSmooksTransformer" 
     configFile="/transforms/smooks-csv-config.xml" 
     resultType="STRING" 
     reportPath="target/smooks-report/report.html" 
     /> 

다음 자바에서 tezt 클래스를 만들려면 노새 설정에 XML에

smooks-CSV - 설정 - XML ​​

<?xml version="1.0" encoding="UTF-8"?> 
<smooks-resource-list xmlns="http://www.milyn.org/xsd/smooks-1.1.xsd" 
         xmlns:csv="http://www.milyn.org/xsd/smooks/csv-1.2.xsd"> 
    <csv:reader fields="order_no?trim,cust_no?trim,prod_no?trim,amount?trim" 
    separator="|" quote="'" skipLines="0" rootElementName="orders" recordElementName="order" indent="true" /> 

    <resource-config selector="global-parameters"> 
     <param name="stream.filter.type">SAX</param> 
    </resource-config> 
</smooks-resource-list> 

을 변환하는 Smooks 변압기를 사용할 수 있습니다

package net.pascalalma.mule.test; 

import java.io.File; 
import java.io.InputStream; 
import java.util.Locale; 
import java.util.TimeZone; 

import org.junit.Test; 
import org.mule.DefaultMuleMessage; 
import org.mule.api.MuleMessage; 
import org.mule.module.client.MuleClient; 
import org.mule.tck.FunctionalTestCase; 
import org.mule.util.IOUtils; 

public class SmooksCsvTest extends FunctionalTestCase 
{ 
    @Override 
    protected String getConfigResources() { 
     return "config/smooks-csv-config.xml"; 
    } 

    @Test 
    public void testSmooks() throws Exception { 
     InputStream in = IOUtils.getResourceAsStream("test-order.csv", this.getClass()); 

     MuleClient client = new MuleClient(); 
     MuleMessage reply = client.send("vm://test-csv-to-xml",new DefaultMuleMessage(in)); 

     assertNotNull(reply); 
     assertNotNull(reply.getPayload()); 

     Object payload = reply.getPayload(); 
     assertTrue("The message payload is not an instance of String", payload instanceof String); 
     assertTrue("The report file wasn't created", getReportFile().exists()); 
    } 

    private File getReportFile() { 
     return new File("target/smooks-report/report.html"); 
    } 
    private void deleteReportFile() { 
     getReportFile().delete(); 
    } 

    /* (non-Javadoc) 
    * @see org.mule.tck.AbstractMuleTestCase#doSetUp() 
    */ 
    @Override 
    protected void doSetUp() throws Exception { 
     super.doSetUp(); 

     TimeZone.setDefault(TimeZone.getTimeZone("EST")); 
     Locale.setDefault(new Locale("en","IE")); 
     deleteReportFile(); 
    } 

    /* (non-Javadoc) 
    * @see org.mule.tck.AbstractMuleTestCase#doTearDown() 
    */ 
    @Override 
    protected void doTearDown() throws Exception { 
     super.doTearDown(); 
     deleteReportFile(); 
    } 
} 

의 출력은 위의 XML로 CSV를 변환하고지도 할 수있는 가장 쉬운 방법이

<orders> 
     <order number="1"> 
       <order_no>1888852</order_no> 
       <cust_no>21625</cust_no> 
       <prod_no>02745011</prod_no> 
       <amount>31</amount> 
     </order> 
     <order number="2"> 
       <order_no>1888853</order_no> 
       <cust_no>21625</cust_no> 
       <prod_no>02745011</prod_no> 
       <amount>71</amount> 
     </order> 
     <order number="3"> 
       <order_no>1888854</order_no> 
       <cust_no>21625</cust_no> 
       <prod_no>02745011</prod_no> 
       <amount>3</amount> 
     </order> 
</orders> 

Reference

2

하나 같을 것이다는 https://developer.mulesoft.com/docs/display/current/Datamapper+User+Guide+and+Reference

그러나 Datamapper 뮬 의 사용이다 ,이 Datamapper는 노새의 특징입니다 기업 판 ...

012 3,516,

기타 다른 옵션은로드에 각 컬럼에 페이로드를 분할 식 변압기를 사용하여 파일 인바운드 엔드 포인트를 사용하여 로컬 디스크에서 CSV 파일,

    1. 에, 각 열을 흐름 변수 에 저장하십시오. - How to read CSV file and insert data into PostgreSQL using Mule ESB, Mule Studio

    2. 마지막으로 입력 .. 심판으로XML 페이로드 와 흐름 변수를 만들 XSLT를 사용 : - : http://opendevelopmentnotes.blogspot.in/2013/09/mule-esb-csv-to-xml-conversion.html

      - https://developer.mulesoft.com/docs/display/current/XSLT+Transformer

    는 또한, 당신은 또한 다음 링크를 참조 할 수 있습니다

    csv to xml: not sure the best way to do it in Mule ESB

  • 관련 문제