W3C DOM object trees can be used to represent an XML document's structure. It may be convenient to:
This sample illustrates how DOM documents can be both passed as input and produced as output from a comparison pipeline.
Essentially the approach is to:
We construct a new saxon processor as follows:
Processor proc= new Processor(false);
We create a pipelined comparator that uses the existing Saxon processor as follows:
PipelinedComparatorS9 pc= new PipelinedComparatorS9(proc);
Note, if the supplied Saxon processor is a Saxon HE (Home Edition) processor then there may be compatibility issues if the pipeline uses any filters which in turn use Saxon PE or EE features.
We make use of a Saxon processor to convert a W3C DOM document
doc) from location (
loc) into Sxaon XdmNode tree as
DOMSource source= new DOMSource(doc, loc); XdmNode xdmNode= proc.newDocumentBuilder().build(source);
We create a Saxon DOM destination as follows:
We perform the XML comparison as follows.
XdmNode result= pc.compare(xdmNode1, xdmNode2);
We create and populate a DOM document as follows:
Document doc= docBuilder.newDocument(); DOMDestination dest= new DOMDestination(doc); proc.writeXdmValue(result, dest);
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
ant or the
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.
javac -cp ../../deltaxml.jar:../../saxon9pe.jar UsingDOM.java java -cp .:../../deltaxml.jar:../../saxon9pe.jar UsingDOM 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.
See the commentry in the UsingDOM.java source file.