2012-02-24 13 views

risposta

1

Sulla base della tua domanda ho provato a fare qualche ricerca su di esso. Si prega di verificare se ti aiuta.

Quindi, ecco il file EDI di origine che deve essere trasformato:

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 

e questo è il risultato atteso della nostra trasformazione:

<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> 

La configurazione Smooks

Noi semplice y specificare SmooksEDIParser come parser di flusso. Ulteriori configurazioni di trasformazione potrebbero essere aggiunte per trasformare ulteriormente questo messaggio. Ecco la configurazione ("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> 

Ecco la mappatura 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> 

Esecuzione La Trasformazione:

// 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

In questo esempio viene spiegato qui creerà file XML da file EDI. Ma è stata posta una domanda sulla preparazione del file EDI da dati XML. Per favore fatemi sapere come può essere fatto. – RCS

Problemi correlati