/** *Class XMLSerializer *@author Martin Carlsson *Internetprogrammering 4 Course */ import java.io.*; import org.w3c.dom.*; /** *XMLSerializer - which is strongly influenced by the DOMSerializer(Java & XML, O'reilly, Mclaughlin sid 112) - is used *as a help class to DomEcho to get a printout of the XML document. *@see DomEcho */ public class XMLSerializer { private String indention; private String newLine; public XMLSerializer() { indention=""; newLine ="\n"; } public void serialize(Document doc, OutputStream out) throws IOException { Writer writer = new OutputStreamWriter(out); serialize(doc, writer); } public void serialize(Document doc, File file) throws IOException { Writer writer = new FileWriter(file); serialize(doc, writer); } public void serialize(Document doc, Writer writer) throws IOException { serializeNode(doc, writer, ""); writer.flush(); } /** Creates printouts to the chosen output source. */ public void serializeNode(Node node, Writer writer, String indentLevel) throws IOException { switch(node.getNodeType()) { case Node.DOCUMENT_NODE: writer.write(""); writer.write(newLine); NodeList nodes = node.getChildNodes(); if(nodes != null ){ for (int i=0; i< nodes.getLength(); i++) { serializeNode(nodes.item(i), writer, ""); } } break; case Node.ELEMENT_NODE: String name = node.getNodeName(); writer.write(indentLevel + "<" + name); NamedNodeMap attributes = node.getAttributes(); for(int i=0; i< attributes.getLength(); i++) { Node current = attributes.item(i); writer.write(" " + current.getNodeName() + "=\"" + current.getNodeValue() + "\""); } writer.write(">"); NodeList children = node.getChildNodes(); if(children != null) { if((children.item(0) != null) && (children.item(0).getNodeType() == Node.ELEMENT_NODE)) { writer.write(newLine); } for(int i=0;i"); break; case Node.TEXT_NODE: writer.write(node.getNodeValue()); break; case Node.CDATA_SECTION_NODE: writer.write(""); break; case Node.COMMENT_NODE: writer.write(indentLevel + ""); writer.write(newLine); writer.write(newLine); break; case Node.PROCESSING_INSTRUCTION_NODE: writer.write(""); writer.write(newLine); break; case Node.ENTITY_REFERENCE_NODE: writer.write("&" + node.getNodeName() + ";"); break; case Node.DOCUMENT_TYPE_NODE: DocumentType docType = (DocumentType)node; writer.write(""); writer.write(newLine); break; } } } // End class XMLSerializer