• Home
  • Java
    • Java Tutorial
    • Java Samples
    • Java FAQ
  • Frameworks
    • Smooks
    • iText
  • Tools
    • Java script
  • API Ref

    Some API References

    • JDK 1.7
    • Java EE 6
    • Servlet
    • JSF 1.2
    • Hibernate 3.6
    • Spring 3
    • Struts 2
    • Richfaces
    •  
    •  
    • More ..
  • Downloads

    Some Useful Downloads

    • Java
    • My Eclipse
    • Eclipse
    • Net Beans
    • Winmerge
    • Notepad++
    • Ant
    • Putty
    •  
    •  
    • More ..
Introduction EDI to XML XML to JAVA


EDI to XML Transformation
Here is the example to transform an EDI file in to XML file.

EDI file: Copy this file into C:/EDI/TEMP/Edi.txt
ISA|00|          |00|          |01|ABCDEFG123  |01|XYZ989898    |111101|0026|^|00405|8909878|0|P|~
GS|GP|ABCDEFG123|XYZ989898|20111101|00264275|5640890|X|004050
ST|600|0001
BIG|04||2396268533||00|20111024||||20111101||20111101
REF|AN|645645646|ORDERNO
REF|11|7576456456|AN
REF|BD|X|RT
PER|GE|BA TISOC|TE|8006849012
DTM|097|20111101|0026
DTM|150|20111031
DTM|198|20111031
DTM|995|20111101
PID|X||TI|FEP|B
N1|BT |ACME DEVELOPMENT COMPANY
N3|PO BOX 6780
N4|BIG CITY|MI|98989
N1|VN |SHIPPING COMPANY
N3|PO BOX 1111
N4|NY CITY|NY|11111
N9|ME|MLT
MTX||This is info 1
N9|ME|MLT
MTX||TThis is info 1
N9|ME|MLT
MTX||This is info 1
CTT|0
SE|15|0001
GE|1|555555
IEA|1|6666666

smooks config file: Copy this file into C:/EDI/TEMP/SmooksConfig.xml
	
<?xml version="1.0"?>
<smooks-resource-list xmlns="http://www.milyn.org/xsd/smooks-1.0.xsd">
	<resource-config selector="org.xml.sax.driver">
		<resource>org.milyn.smooks.edi.SmooksEDIParser</resource>
		<param name="mapping-model">C://EDI//TEMP//Mapping.xml</param>
	</resource-config>
</smooks-resource-list>

smooks mapping file: Copy this file into C:/EDI/TEMP/Mapping.xml
<?xml version="1.0" encoding="UTF-8"?>
<medi:edimap xmlns:medi="http://www.milyn.org/schema/edi-message-mapping-1.4.xsd">

	<medi:description name="xml" version="1.4" />

	<medi:delimiters segment="
" field="|" component="*" sub-component="."/>

	<medi:segments xmltag="ORDER">
 
		<medi:segmentGroup xmltag="ENVELOP_HEADER" maxOccurs="-1">
						<medi:field xmltag="SMOOKS1"/>
						<medi:field xmltag="SMOOKS2"/>
						<medi:field xmltag="SMOOKS3"/>
						<medi:field xmltag="SMOOKS4"/>
						<medi:field xmltag="SMOOKS5"/>
						<medi:field xmltag="SMOOKS6"/>
						<medi:field xmltag="SMOOKS7"/>
						<medi:field xmltag="SMOOKS8"/>
						<medi:field xmltag="SMOOKS9"/>
						<medi:field xmltag="SMOOKS10"/>
						<medi:field xmltag="SMOOKS11"/>
						<medi:field xmltag="SMOOKS12"/>
						<medi:field xmltag="SMOOKS13"/>
						<medi:field xmltag="SMOOKS14"/>
						<medi:field xmltag="SMOOKS15"/>
						<medi:field xmltag="SMOOKS16"/>
						<medi:field xmltag="SMOOKS17"/>
				</medi:segment>
				<medi:segment segcode="GS" xmltag="FUNCTIONALHEADER">
						<medi:field xmltag="SMOOKS1"/>
						<medi:field xmltag="SMOOKS2"/>
						<medi:field xmltag="SMOOKS3"/>
						<medi:field xmltag="SMOOKS4"/>
						<medi:field xmltag="SMOOKS5"/>
						<medi:field xmltag="SMOOKS6"/>
						<medi:field xmltag="SMOOKS7"/>
						<medi:field xmltag="SMOOKS8"/>
				</medi:segment>
				<medi:segment segcode="ST\|600.*" xmltag="DOCUMENT_INFORMATION_GRP" maxOccurs="1"  minOccurs="0" truncatable="true">
						<medi:field xmltag="DOCUMENT_TYPE" />
						<medi:field xmltag="DOCUMENT_NUM" />
				</medi:segment>
			</medi:segmentGroup>
		
		<medi:segmentGroup xmltag="DOCUMENT_HEADER" maxOccurs="-1" minOccurs="0">
		      <medi:segment segcode="BIG\|04.*" xmltag="ORD_GRP" maxOccurs="1" minOccurs="0" truncatable="true">
					    <medi:field xmltag="SMOOKS1" />
						<medi:field xmltag="SMOOKS2" />
						<medi:field xmltag="SMOOKS3" />
						<medi:field xmltag="SMOOKS4" />
						<medi:field xmltag="SMOOKS5" />
						<medi:field xmltag="SMOOKS6" />
						<medi:field xmltag="SMOOKS7" />
						<medi:field xmltag="SMOOKS8" />
						<medi:field xmltag="SMOOKS9" />
						<medi:field xmltag="SMOOKS10" />
						<medi:field xmltag="SMOOKS11" />
						<medi:field xmltag="SMOOKS12" />
				</medi:segment>

               
				<medi:segment segcode="REF\|AN.*" xmltag="ORDER_INFO_GRP" maxOccurs="-1" minOccurs="0" truncatable="true">
					   <medi:field xmltag="SEGQUALIFIER" />
						<medi:field xmltag="ORDER" />
						<medi:field xmltag="TYPE" />
				</medi:segment>
				<medi:segment segcode="REF\|11.*" xmltag="ORDER_INFO_GRP2" maxOccurs="-1" minOccurs="0" truncatable="true">
					   <medi:field xmltag="SEGQUALIFIER" />
						<medi:field xmltag="ACCOUNT_NUMBER" />
						<medi:field xmltag="TYPE" />
				</medi:segment>
				 <medi:segment segcode="REF\|BD.*" xmltag="ORDER_INFO_GRP3" maxOccurs="-1" minOccurs="0" truncatable="true">
					    <medi:field xmltag="SMOOKS1" />
						<medi:field xmltag="SMOOKS2" />
						<medi:field xmltag="SMOOKS3" />
				</medi:segment>
				<medi:segment segcode="PER\|GE.*" xmltag="ORDER_INFO_GRP4" maxOccurs="-1" minOccurs="0" truncatable="true">
						<medi:field xmltag="SMOOKS1" />
						<medi:field xmltag="SMOOKS2" />
						<medi:field xmltag="SMOOKS3" />
						<medi:field xmltag="SMOOKS4" />
				</medi:segment>
				<medi:segment segcode="DTM\|097.*" xmltag="ORDER_INFO_GRP5" maxOccurs="1" minOccurs="0" truncatable="true">
						<medi:field xmltag="SMOOKS1" />
						<medi:field xmltag="SMOOKS2" />
						<medi:field xmltag="SMOOKS3" />
				</medi:segment>
				
				<medi:segment segcode="DTM\|150.*" xmltag="ORDER_INFO_GRP6" maxOccurs="1" minOccurs="0" truncatable="true">
						<medi:field xmltag="SMOOKS1" />
						<medi:field xmltag="SMOOKS2" />
						<medi:field xmltag="SMOOKS3" />
						<medi:field xmltag="SMOOKS4" />
						<medi:field xmltag="SMOOKS5" />
						<medi:field xmltag="SMOOKS6" />
						<medi:field xmltag="SMOOKS7" />
				</medi:segment>
				
				<medi:segment segcode="DTM\|198.*" xmltag="ORDER_INFO_GRP7" maxOccurs="1" minOccurs="0" truncatable="true">
						<medi:field xmltag="SMOOKS1" />
						<medi:field xmltag="SMOOKS2" />
				</medi:segment>
				<medi:segment segcode="DTM\|995.*" xmltag="ORDER_INFO_GRP8" maxOccurs="1" minOccurs="0" truncatable="true">
						<medi:field xmltag="SMOOKS1" />
						<medi:field xmltag="SMOOKS2" />
						<medi:field xmltag="SMOOKS3" />
						<medi:field xmltag="SMOOKS4" />
				</medi:segment>
		     
				<medi:segment segcode="PID" xmltag="ORDER_INFO_GRP9" maxOccurs="1" minOccurs="0" truncatable="true">
						<medi:field xmltag="SMOOKS1" />
						<medi:field xmltag="SMOOKS2" />
						<medi:field xmltag="SMOOKS3" />
						<medi:field xmltag="SMOOKS4" />
						<medi:field xmltag="SMOOKS5" />
				</medi:segment>
			
			    <medi:segmentGroup xmltag="BILLING_ADDRESS_GROUP" maxOccurs="-1" minOccurs="0">
				<medi:segment segcode="N1\|BT.*" xmltag="BILLING_ADDRESS1" maxOccurs="1" minOccurs="0" truncatable="true">
						<medi:field xmltag="SMOOKS1" />
						<medi:field xmltag="SMOOKS2" />
				</medi:segment>
				<medi:segment segcode="N3" xmltag="BILLING_ADDRESS2" maxOccurs="1" minOccurs="0" truncatable="true">
						<medi:field xmltag="SMOOKS1" />
						<medi:field xmltag="SMOOKS2" />
				</medi:segment>
				<medi:segment segcode="N4" xmltag="BILLING_ADDRESS3" maxOccurs="1" minOccurs="0" truncatable="true">
						<medi:field xmltag="SMOOKS1" />
						<medi:field xmltag="SMOOKS2" />
						<medi:field xmltag="SMOOKS3" />
				</medi:segment>
				</medi:segmentGroup> 
				
				<medi:segmentGroup xmltag="SHIPPING_ADDRESS_GROUP" maxOccurs="-1" minOccurs="0">
				<medi:segment segcode="N1\|VN.*" xmltag="SHIPPING_ADDRESS1" maxOccurs="1" minOccurs="0" truncatable="true">
						<medi:field xmltag="SMOOKS1" />
						<medi:field xmltag="SMOOKS2" />
				</medi:segment>
				<medi:segment segcode="N3" xmltag="SHIPPING_ADDRESS2" maxOccurs="1" minOccurs="0" truncatable="true">
						<medi:field xmltag="SMOOKS1" />
						<medi:field xmltag="SMOOKS2" />
				</medi:segment>
				<medi:segment segcode="N4" xmltag="SHIPPING_ADDRESS3" maxOccurs="1" minOccurs="0" truncatable="true">
						<medi:field xmltag="SMOOKS1" />
						<medi:field xmltag="SMOOKS2" />
						<medi:field xmltag="SMOOKS3" />
				</medi:segment>
				</medi:segmentGroup> 
				
				<medi:segmentGroup xmltag="DOCUMENT_LINEITEMS" maxOccurs="-1" minOccurs="0">
						<medi:segment segcode="N9" xmltag="LINE_ITEM" maxOccurs="1" minOccurs="0" truncatable="true">
							<medi:field xmltag="SMOOKS1" />
							<medi:field xmltag="SMOOKS2" />
						</medi:segment>
						<medi:segment segcode="MTX" xmltag="LINE_INFO" maxOccurs="1" minOccurs="0" truncatable="true">
							<medi:field xmltag="SMOOKS1" />
							<medi:field xmltag="SMOOKS2" />
						</medi:segment>
				</medi:segmentGroup> 
				
				
     </medi:segmentGroup>          
	
	<medi:segmentGroup xmltag="DOCUMENT_SUMMARY" maxOccurs="1" minOccurs="0">
			<medi:segment segcode="CTT" xmltag="CTT"  maxOccurs="1" minOccurs="0" truncatable="true">
						<medi:field xmltag="CTT" />
			</medi:segment>
	    </medi:segmentGroup>
		
		<medi:segmentGroup xmltag="ENVELOP_FOOTER" maxOccurs="1">
				<medi:segment segcode="SE" xmltag="SEGMENTDETAILS"  maxOccurs="-1" minOccurs="0" truncatable="true">
						<medi:field xmltag="SEGQUALIFIER" />
						<medi:field xmltag="TYPE" />
				</medi:segment>
				<medi:segment segcode="GE" xmltag="GE"  maxOccurs="-1" minOccurs="0" truncatable="true">
						<medi:field xmltag="TRANSACTIONSETCOUNT" />
						<medi:field xmltag="GROUPCONTROLNUMBER" />
				</medi:segment>
				<medi:segment segcode="IEA" xmltag="IEA"  maxOccurs="-1" minOccurs="0" truncatable="true">
						<medi:field xmltag="FUNCGROUPCOUNT" />
						<medi:field xmltag="INTERCHANGECONTROLNUMBER" />
				</medi:segment>
	    </medi:segmentGroup>
         		
   </medi:segments>
</medi:edimap>


Java class to execute transformation: Once you execute following class it will generate Edi.xml file in in C:/EDI/TEMP You need to have commons-lang-2.6jar, commons-loggong.jar, jaxen-1.1.2.jar,jdom-1.0.jar,milyn-commons-1.4.jar, milyn-edisax-parser-1.4.jar. milyn-smooks-core.jar, milyn-smooks-edi-1.2.jar, milyn-smooks-javabean-1.2.4.jar, milyn-smooks-templating-1.2.4.jar, mvel2-2.1.jar files in class path.
package com.tech.sample.smooks;

import java.io.BufferedWriter;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.StringReader;
import java.io.Writer;
import java.util.Scanner;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import org.milyn.Smooks;

public class Sample {
	
	public static void main(String[] args){
		
		String ediContentStr = null;
		String xmlFileName = "C://EDI//TEMP//Edi.xml";
	       
		try{
			Smooks smooks = new Smooks("C://EDI//TEMP//SmooksConfig.xml");
			ediContentStr = getFileContent("C://EDI//TEMP//Edi");
			System.out.println("Edi Con" + ediContentStr);
			
			   String xmlStr = null;
			   ByteArrayOutputStream xmlstream = new ByteArrayOutputStream();
			   StringReader reader = new StringReader(ediContentStr);
			   smooks.filterSource(new StreamSource(reader),  new StreamResult(xmlstream));
			   xmlStr = xmlstream.toString();
			   writeToXMLFile(xmlStr, xmlFileName);	
		
		} catch(Exception e){
			 e.printStackTrace();
		}
	}
	
	private static boolean writeToXMLFile(String content, String fileName) {
	    boolean success = false;
	  try{
	    File xmlfile = new File(fileName);
	    xmlfile.createNewFile();
	    setContentsToFile(xmlfile, content);
	    success = true;
	    }catch(Exception e){
		  e.printStackTrace();
		  success = false;
	     }
	    return success;
	
   }
	
	private static  void setContentsToFile(File aFile, String aContents)  throws FileNotFoundException, IOException {
		if (aFile == null) {
		throw new IllegalArgumentException("File should not be null.");
		}
		if (!aFile.exists()) {
		throw new FileNotFoundException ("File does not exist: " + aFile);
		}
		if (!aFile.isFile()) {
		throw new IllegalArgumentException("Should not be a directory: " + aFile);
		}
		if (!aFile.canWrite()) {
		throw new IllegalArgumentException("File cannot be written: " + aFile);
		}
		Writer output = new BufferedWriter(new FileWriter(aFile));
			try {
				output.write( aContents );
			}
			finally {
				output.close();
			}

	}
	
	private static String getFileContent(String fileName){
	   	  Scanner scanner = null;
	   	  StringBuilder fileContents = null;
	   	  try{
	   		  	File file = new File(fileName);
						fileContents = new StringBuilder((int)file.length());
						scanner = new Scanner(file);
						String lineSeparator = System.getProperty("line.separator");
				
							while(scanner.hasNextLine()) { 
								fileContents.append(scanner.nextLine() + lineSeparator);  
							}
							
	   	  }catch(Exception e){
	   		  e.printStackTrace();
	   	  }
				finally {
					if(scanner != null){
						scanner.close();
					}
					} 
				
				return fileContents.toString();
	     }

}








Privacy Policy     Contact Us     Links
©2012 techsamples.com. All rights reserved