2012-02-24 5 views
16

Làm cách nào để chuyển đổi tệp XML sang tệp EDI bằng SMOOKS?Tạo tệp EDI bằng SMOOKS

Tôi có thể chuyển đổi EDI thành XML, trên thực tế đây là một phần của các ví dụ do SMOOKS cung cấp.

Trả lời

1

Dựa trên câu hỏi của bạn, tôi đã cố gắng thực hiện một số nghiên cứu về nó. Vui lòng kiểm tra xem nó có giúp bạn không.

Vì vậy, đây là nguồn tập tin edi mà là để được biến đổi:

HDR*1*0*59.97*64.92*4.95*Wed Nov 15 13:45:28 EST 2006 
CUS*user1*Harry^Fletcher*SD 
ORD*1*1*364*The 40-Year-Old Virgin*29.98 
ORD*2*1*299*Pulp Fiction*29.99 

Và đây là kết quả dự kiến ​​của sự biến đổi của chúng tôi:

<Order> 
    <header> 
      <order-id>1</order-id> 
      <status-code>0</status-code> 
      <net-amount>59.97</net-amount> 
      <total-amount>64.92</total-amount> 
      <tax>4.95</tax> 
      <date>Wed Nov 15 13:45:28 EST 2006</date> 
    </header> 
    <customer-details> 
      <username>user1</username> 
      <name> 
        <firstname>Harry</firstname> 
        <lastname>Fletcher</lastname> 
      </name> 
      <state>SD</state> 
    </customer-details> 
    <order-item> 
      <position>1</position> 
      <quantity>1</quantity> 
      <product-id>364</product-id> 
      <title>The 40-Year-Old Virgin</title> 
      <price>29.98</price> 
    </order-item> 
    <order-item> 
      <position>2</position> 
      <quantity>1</quantity> 
      <product-id>299</product-id> 
      <title>Pulp Fiction</title> 
      <price>29.99</price> 
    </order-item> 
</Order> 

Các Smooks Cấu hình

Chúng tôi đơn giản y chỉ định SmooksEDIParser làm trình phân tích luồng. Có thể thêm nhiều cấu hình chuyển đổi hơn để chuyển đổi thông điệp này thêm nữa. Dưới đây là các cấu hình ("smooks-config.xml"):

<?xml version="1.0"?> 
<smooks-resource-list xmlns="http://www.milyn.org/xsd/smooks-1.1.xsd" 
        xmlns:edi="http://www.milyn.org/xsd/smooks/edi-1.1.xsd"> 

<!-- 
Configure the EDI Reader to process the message stream into a stream of SAX events. 
--> 
<edi:reader mappingModel="/example/edi-to-xml-order-mapping.xml" /> 

</smooks-resource-list> 

Dưới đây là các bản đồ edi ("/src/main/java/example/edi-to-xml-order-mapping.xml"):

<?xml version="1.0" encoding="UTF-8"?> 
<medi:edimap xmlns:medi="http://www.milyn.org/schema/edi-message-mapping-1.0.xsd"> 
<medi:description name="DVD Order" version="1.0" /> 
<medi:delimiters segment="&#10;" field="*" component="^" sub-component="~" /> 
<medi:segments xmltag="Order"> 
    <medi:segment segcode="HDR" xmltag="header"> 
     <medi:field xmltag="order-id" /> 
     <medi:field xmltag="status-code" /> 
     <medi:field xmltag="net-amount" /> 
     <medi:field xmltag="total-amount" /> 
     <medi:field xmltag="tax" /> 
     <medi:field xmltag="date" /> 
    </medi:segment> 
    <medi:segment segcode="CUS" xmltag="customer-details"> 
     <medi:field xmltag="username" /> 
     <medi:field xmltag="name"> 
      <medi:component xmltag="firstname" /> 
      <medi:component xmltag="lastname" /> 
     </medi:field> 
     <medi:field xmltag="state" /> 
    </medi:segment> 
    <medi:segment segcode="ORD" xmltag="order-item" maxOccurs="-1"> 
     <medi:field xmltag="position" /> 
     <medi:field xmltag="quantity" /> 
     <medi:field xmltag="product-id" /> 
     <medi:field xmltag="title" /> 
     <medi:field xmltag="price" /> 
    </medi:segment> 
</medi:segments> 
</medi:edimap> 

thực hiện các chuyển đổi:

// Instantiate Smooks with the config... 
Smooks smooks = new Smooks("smooks-config.xml"); 

try { 
// Filter the input message to the outputWriter... 
smooks.filterSource(new StreamSource(messageIn), new 
StreamResult(messageOut)); 
} finally { 
smooks.close(); 
} 
+0

Ví dụ này bạn giải thích ở đây sẽ tạo ra tập tin XML từ file edi. Nhưng câu hỏi đã được yêu cầu chuẩn bị tập tin EDI từ dữ liệu XML. Bạn có thể cho tôi biết làm thế nào nó có thể được thực hiện. – RCS