home *** CD-ROM | disk | FTP | other *** search
- package net.n3.nanoxml;
-
- import java.io.IOException;
- import java.io.OutputStream;
- import java.io.PrintWriter;
- import java.io.Writer;
- import java.util.Enumeration;
-
- public class XMLWriter {
- private PrintWriter writer;
-
- public XMLWriter(Writer var1) {
- if (var1 instanceof PrintWriter) {
- this.writer = (PrintWriter)var1;
- } else {
- this.writer = new PrintWriter(var1);
- }
-
- }
-
- public XMLWriter(OutputStream var1) {
- this.writer = new PrintWriter(var1);
- }
-
- protected void finalize() throws Throwable {
- this.writer = null;
- super.finalize();
- }
-
- public void write(XMLElement var1) throws IOException {
- this.write(var1, true, 0);
- }
-
- public void write(XMLElement var1, boolean var2) throws IOException {
- this.write(var1, var2, 0);
- }
-
- public void write(XMLElement var1, boolean var2, int var3) throws IOException {
- if (var2) {
- for(int var4 = 0; var4 < var3; ++var4) {
- this.writer.print(' ');
- }
- }
-
- if (var1.getName() == null) {
- if (var1.getContent() != null) {
- if (var2) {
- this.writeEncoded(var1.getContent().trim());
- this.writer.println();
- } else {
- this.writeEncoded(var1.getContent());
- }
- }
- } else {
- this.writer.print('<');
- this.writer.print(var1.getName());
- Enumeration var7 = var1.enumerateAttributeNames();
-
- while(var7.hasMoreElements()) {
- String var5 = (String)var7.nextElement();
- String var6 = var1.getAttribute(var5);
- this.writer.print(" " + var5 + "=\"");
- this.writeEncoded(var6);
- this.writer.print('"');
- }
-
- if (var1.getContent() != null && var1.getContent().length() > 0) {
- this.writer.print('>');
- this.writeEncoded(var1.getContent());
- this.writer.print("</" + var1.getName() + '>');
- if (var2) {
- this.writer.println();
- }
- } else if (var1.hasChildren()) {
- this.writer.print('>');
- if (var2) {
- this.writer.println();
- }
-
- var7 = var1.enumerateChildren();
-
- while(var7.hasMoreElements()) {
- XMLElement var9 = (XMLElement)var7.nextElement();
- this.write(var9, var2, var3 + 4);
- }
-
- if (var2) {
- for(int var10 = 0; var10 < var3; ++var10) {
- this.writer.print(' ');
- }
- }
-
- this.writer.print("</" + var1.getName() + ">");
- if (var2) {
- this.writer.println();
- }
- } else {
- this.writer.print("/>");
- if (var2) {
- this.writer.println();
- }
- }
- }
-
- this.writer.flush();
- }
-
- private void writeEncoded(String var1) {
- for(int var2 = 0; var2 < var1.length(); ++var2) {
- char var3 = var1.charAt(var2);
- switch (var3) {
- case '\n':
- case '\r':
- this.writer.print(var3);
- break;
- case '"':
- this.writer.print(""");
- break;
- case '&':
- this.writer.print("&");
- break;
- case '\'':
- this.writer.print("'");
- break;
- case '<':
- this.writer.print("<");
- break;
- case '>':
- this.writer.print(">");
- break;
- default:
- if (var3 >= ' ' && var3 <= '~') {
- this.writer.print(var3);
- } else {
- this.writer.print("");
- this.writer.print(Integer.toString(var3, 16));
- this.writer.print(';');
- }
- }
- }
-
- }
- }
-