/*
* XMLIOStreamManager.java
*
* Created on October 16, 2001, 8:03 AM
*
*/
package org.freehep.xml.io;
import java.io.*;
import java.lang.String;
import org.jdom.input.SAXBuilder;
import org.jdom.output.XMLOutputter;
import org.jdom.output.Format;
import org.jdom.*;
/**
* Class XMLIOStreamManager deals with xml files.
*
* @author turri
* @version 1.0
*
*/
public class XMLIOStreamManager
{
private InputStream xmlInputStream;
private OutputStream xmlOutputStream;
private String systemId;
private SAXBuilder xmlBuilder = new SAXBuilder(false);
private XMLOutputter xmlOutputter = new XMLOutputter(Format.getPrettyFormat());
/**
* The main constructor
*
*/
public XMLIOStreamManager() {
}
/**
* The main constructor
* @param xmlInputStream the input Stream
* @param xmlOutputStream the output Stream
*
*/
public XMLIOStreamManager( InputStream xmlInputStream, OutputStream xmlOutputStream )
{
setXMLInputStream( xmlInputStream );
setXMLOutputStream( xmlOutputStream );
}
public SAXBuilder getBuilder() {
return xmlBuilder;
}
/**
* Set the input Stream
* @param xmlInputStream the input Stream
*
*/
public void setXMLInputStream( InputStream xmlInputStream )
{
this.xmlInputStream = xmlInputStream;
}
public void setXMLInputStream( InputStream xmlInputStream, String systemId )
{
this.xmlInputStream = xmlInputStream;
this.systemId = systemId;
}
/**
* Set the output Stream
* @param xmlOutputStream the output Stream
*
*/
public void setXMLOutputStream( OutputStream xmlOutputStream )
{
this.xmlOutputStream = xmlOutputStream;
}
/**
* From the input Stream convert the text in xml format
* and return the main root Element
* @return the jdom main Element
* @exception JDOMException from the build method of SAXBuilder
* @see org.jdom.input.SAXBuilder#build( InputStream )
* @exception IOMException for the specific implementations of InputStream
*
*/
public Element getRootElement() throws JDOMException, IOException
{
Document outputDoc = xmlBuilder.build(xmlInputStream, systemId);
return outputDoc.getRootElement();
}
/**
* Write to the output Stream performing an xml to text conversion
* @param rootEl is the root Element that gets converted
* to text and dumped in the output file.
* @exception IOException from the output method of XMLOutputter
* @see org.jdom.output.XMLOutputter#output( Document, OutputStream )
*
*/
public void saveRootElement( Element rootEl ) throws IOException {
saveRootElement(rootEl,null);
}
public void saveRootElement( Element rootEl, DocType docType ) throws IOException
{
Document inputDoc = docType != null ? new Document(rootEl, docType) : new Document(rootEl);
xmlOutputter.output( inputDoc, xmlOutputStream );
xmlOutputStream.close();
}
}