Suppose you need to serialize a DOM tree, with the result being an XML document. Xerces-J allows you to specify a maximum line length and an indent value. Here's an example:
//the XML document used in this example is:
//"C://Data_local//xml//docs//AirWings_xml.xml"
//The application has two steps:
// 1. - Get the DOM tree of this XML document;
// 2. - Serialize the DOM by using Xerces-J;
// Notice that the indentation is set to 5 characters and the maximum //line length to 100 characters.
import javax.xml.parsers.*;
import org.w3c.dom.*;
import java.io.*;
import org.apache.xml.serialize.*;
class DOM{
DocumentBuilderFactory DBF=null;
DocumentBuilder DB=null;
Document D=null;
FileOutputStream FOS=null;
public DOM(){}
//get the DOM
public void createDOMTree(String XMLdoc)
{
try{
System.setProperty("javax.xml.parsers.DocumentBuilderFactory",
"org.apache.xerces.jaxp.DocumentBuilderFactoryImpl");
//get a DocumentBuilderFactory object
DBF=DocumentBuilderFactory.newInstance();
//get a DocumentBuilder object
DB=DBF.newDocumentBuilder();
//get the DOM tree from the XML document
D=DB.parse(new File(XMLdoc));
//get a OutputFormat object
OutputFormat OF=new OutputFormat();
//setting indentation and maximum line length
OF.setIndent(5);
OF.setLineWidth(100);
//get an OutputStream object
try{
FOS=new FileOutputStream
("C://Data_Local//xml//docs//SerXerces.xml");
}catch(java.io.FileNotFoundException e)
{System.err.println(e.getMessage());}
//configure an XMLSerializer object
XMLSerializer XMLS=new XMLSerializer();
XMLS.setOutputFormat(OF);
XMLS.setOutputByteStream((OutputStream)FOS);
//start serialization
XMLS.serialize(D);
}catch(javax.xml.parsers.ParserConfigurationException e)
{System.out.println(e.getMessage());
}catch(org.xml.sax.SAXException e)
{System.out.println(e.getMessage());
}catch(java.io.IOException e)
{System.out.println(e.getMessage());}
}
}
public class SerializareXerces{
public static void main(String[] args)
{
DOM t=new DOM();
t.createDOMTree("C://Data_local//xml//docs//AirWings_xml.xml");
}
}
It's quick, easy and you get access to all the articles on DevX.
This registration/login is to allow you to read articles on devx.com. Already a member?
To become a member of DevX.com create your Member Profile by completing the form below. Membership is free!
If you have a hot tip and we publish it, we'll pay you. However, due to accounting overhead we no longer pay $10 for a single tip submission. You must accumulate 10 acceptable tips to receive payment. Be sure to include a clear explanation of what the technique does and why it's useful. If it includes code, limit it to 20 lines if possible. Submit your tip here.