/** * Writes an XML element. * * @param xml the non-null XML element to write. * @param indent how many spaces to indent the element. */ public void write(XMLElement xml, int indent) throws IOException { for (int i = 0; i < indent; i++) { this.writer.print(' '); } if (xml.getName() == null) { if (xml.getContent() != null) { this.writeEncoded(xml.getContent()); // aspect(xml.getContent(), "xml.getContent() - 111"); this.writer.println(); } } else { this.writer.print('<'); this.writer.print(xml.getName()); // aspect(xml.getName(), "xml.getName() - 116"); Enumeration _enum = xml._enumerateAttributeNames(); while (_enum.hasMoreElements()) { String key = (String) _enum.nextElement(); String value = xml.getAttribute(key); this.writer.print(" " + key + "=\""); // aspect(key, "key - 122"); this.writeEncoded(value); // aspect(value, "value - 123"); this.writer.print('"'); } if ((xml.getContent() != null) && (xml.getContent().length() > 0)) { writer.print('>'); this.writeEncoded(xml.getContent()); // aspect(xml.getContent(), "xml.getContent() - 130"); writer.println("</" + xml.getName() + '>'); // aspect(xml.getName(), "xml.getName() - 131"); } else if (xml.hasChildren()) { writer.println('>'); _enum = xml._enumerateChildren(); while (_enum.hasMoreElements()) { XMLElement child = (XMLElement) _enum.nextElement(); this.write(child, indent + 4); } for (int i = 0; i < indent; i++) { this.writer.print(' '); } this.writer.println( "</" + xml.getName() + ">"); // aspect(xml.getName(), "xml.getName() - 138"); } else { this.writer.println("/>"); } } this.writer.flush(); }