xml - java sample for encoding/decoding EXI? -
i'm looking java sample program encoding/decoding exi (efficient xml interchange) streams, using either exificient or openexi.
could help? can't seem find sample app.
edit: alternatively, if point me towards documentation allow me use exificient or openexi, helpful. found javadoc have no idea classes use.
or, @staxman points out, there particular mention/discussion of appropriate top-level classes use 1 of standard xml apis?
using exificient, i've managed encode & decode sample xml exi using snippet "help" page , their "demo", i've managed following working using maven dependency
<dependency> <groupid>com.siemens.ct.exi</groupid> <artifactid>exificient</artifactid> <version>0.9.4</version> </dependency>
with code
import com.siemens.ct.exi.exifactory; import com.siemens.ct.exi.grammarfactory; import com.siemens.ct.exi.api.sax.exiresult; import com.siemens.ct.exi.api.sax.exisource; import com.siemens.ct.exi.helpers.defaultexifactory; import org.xml.sax.inputsource; import org.xml.sax.xmlreader; import org.xml.sax.helpers.xmlreaderfactory; import java.io.file; import java.io.fileinputstream; import java.io.fileoutputstream; import javax.xml.transform.transformerfactory; import javax.xml.transform.stream.streamresult; // based on: https://sourceforge.net/p/exificient/code/head/tree/tags/exificient-0.9.4/src/sample/java/exificientdemo.java?format=raw public class minimalistexificientsample { static final boolean use_schema = true; public static void main(string[] args) throws exception{ file xmlin = new file( "/home/artb/spring-core-4.1.6.release.pom.xml" ); fileinputstream xmlins = new fileinputstream( xmlin ); file exi = new file( "/home/artb/spring-core-4.1.6.release.pom." +(use_schema? "schema":"schemaless")+ ".exi" ) fileoutputstream exiouts = new fileoutputstream( exi ); file xmlout = new file( "/home/artb/spring-core-4.1.6.release.pom." +(use_schema? "schema":"schemaless")+ ".xml" ); //settings exifactory exifactory = defaultexifactory.newinstance(); exifactory.setgrammars( grammarfactory.newinstance().creategrammars( "/home/artb/maven-4.0.0.xsd" ) ); // encode inputsource xmlis = new inputsource( xmlins ); exiresult exiresult = use_schema ? new exiresult(exifactory) : new exiresult(); exiresult.setoutputstream( exiouts ); xmlreader xmlreader = xmlreaderfactory.createxmlreader(); xmlreader.setcontenthandler( exiresult.gethandler() ); xmlreader.parse( xmlis ); // decode fileoutputstream xmlouts = new fileoutputstream( xmlout ); fileinputstream exiins = new fileinputstream( exi ); inputsource exiis = new inputsource( exiins ); exisource exisource = use_schema ? new exisource(exifactory) : new exisource(); exisource.setinputsource(exiis); exisource.setxmlreader( exisource.getxmlreader() ); transformerfactory.newinstance().newtransformer().transform(exisource, new streamresult(xmlouts)); } }
use maven xsd , spring 4.1.6 pom maven central sample data.
nb: output xml ought equivalent input, not equal since comments , whitespace lost , namespace aliases(? might using wrong term here) arbitrarily assigned.
Comments
Post a Comment