XOM trees can be used to represent an XML document's structure. It may be convenient to:
This sample illustrates how XOM documents can be both passed as input and produced as output from a comparison pipeline.
Note, XOM libraries are not shipped with the XML Compare product, therefore the user needs to supply a XOM library, which can be obtained from http://www.xom.nu/.
Essentially the approach is to:
We construct a new saxon processor as follows, ensuring that we use a PE capable processor as this is required for Saxon's XOM support.
Processor proc= new Processor(true); Configuration config= proc.getUnderlyingConfiguration();
We create a pipelined comparator that uses the existing Saxon processor as follows:
PipelinedComparatorS9 pc= new PipelinedComparatorS9(proc);
We make use of a Saxon processor to convert a XOM document
doc) from location (
loc) into Sxaon XdmNode tree as
DocumentWrapper wrap= new DocumentWrapper(doc, loc, config); XdmNode xdmNode1= proc.newDocumentBuilder().build(wrap);
We perform the XML comparison as follows.
XdmNode result= pc.compare(xdmNode1, xdmNode2);
We create a XOM document from the resulting Saxon XdmNode as follows:
XOMDestination dest= new XOMDestination(); proc.writeXdmValue(result, dest); XOMWriter writer= (XOMWriter)dest.getReceiver(config); Document output= writer.getDocument();
The sample is designed to be built and run via the Ant build technology. The provided build.xml script has two main targets
run- the default target which compiles and runs the sample code.
clean- returns the sample to its original state.
It can be run by issuing either the
<path-to-xom.jar>is the path
to the user supplied XOM library.
Alternatively, the sample can be manually compiled and run using the
following Java commands, asuming that both the Java compiler and runtime
platforms are avaialble on the command-line, and that
<path-to-xom.jar> is the path to the user supplied
javac -cp ../../deltaxml.jar:../../saxon9pe.jar:<path-to-xom.jar> UsingXOM.java XOMDestination.java java -cp .:../../deltaxml.jar:../../saxon9pe.jar:<path-to-xom.jar> UsingXOM input1.xml input2.xml output.xml
Note that you need to ensure that you use the correct directory and class path separators for your operating system.