home *** CD-ROM | disk | FTP | other *** search
/ PC Professionell 2005 July / PCpro_2005_07.ISO / files / wintools / FullSync / FullSyncInstaller.exe / net / n3 / nanoxml / XMLWriter.class (.txt) < prev   
Encoding:
Java Class File  |  2005-03-08  |  2.3 KB  |  144 lines

  1. package net.n3.nanoxml;
  2.  
  3. import java.io.IOException;
  4. import java.io.OutputStream;
  5. import java.io.PrintWriter;
  6. import java.io.Writer;
  7. import java.util.Enumeration;
  8.  
  9. public class XMLWriter {
  10.    private PrintWriter writer;
  11.  
  12.    public XMLWriter(Writer var1) {
  13.       if (var1 instanceof PrintWriter) {
  14.          this.writer = (PrintWriter)var1;
  15.       } else {
  16.          this.writer = new PrintWriter(var1);
  17.       }
  18.  
  19.    }
  20.  
  21.    public XMLWriter(OutputStream var1) {
  22.       this.writer = new PrintWriter(var1);
  23.    }
  24.  
  25.    protected void finalize() throws Throwable {
  26.       this.writer = null;
  27.       super.finalize();
  28.    }
  29.  
  30.    public void write(XMLElement var1) throws IOException {
  31.       this.write(var1, true, 0);
  32.    }
  33.  
  34.    public void write(XMLElement var1, boolean var2) throws IOException {
  35.       this.write(var1, var2, 0);
  36.    }
  37.  
  38.    public void write(XMLElement var1, boolean var2, int var3) throws IOException {
  39.       if (var2) {
  40.          for(int var4 = 0; var4 < var3; ++var4) {
  41.             this.writer.print(' ');
  42.          }
  43.       }
  44.  
  45.       if (var1.getName() == null) {
  46.          if (var1.getContent() != null) {
  47.             if (var2) {
  48.                this.writeEncoded(var1.getContent().trim());
  49.                this.writer.println();
  50.             } else {
  51.                this.writeEncoded(var1.getContent());
  52.             }
  53.          }
  54.       } else {
  55.          this.writer.print('<');
  56.          this.writer.print(var1.getName());
  57.          Enumeration var7 = var1.enumerateAttributeNames();
  58.  
  59.          while(var7.hasMoreElements()) {
  60.             String var5 = (String)var7.nextElement();
  61.             String var6 = var1.getAttribute(var5);
  62.             this.writer.print(" " + var5 + "=\"");
  63.             this.writeEncoded(var6);
  64.             this.writer.print('"');
  65.          }
  66.  
  67.          if (var1.getContent() != null && var1.getContent().length() > 0) {
  68.             this.writer.print('>');
  69.             this.writeEncoded(var1.getContent());
  70.             this.writer.print("</" + var1.getName() + '>');
  71.             if (var2) {
  72.                this.writer.println();
  73.             }
  74.          } else if (var1.hasChildren()) {
  75.             this.writer.print('>');
  76.             if (var2) {
  77.                this.writer.println();
  78.             }
  79.  
  80.             var7 = var1.enumerateChildren();
  81.  
  82.             while(var7.hasMoreElements()) {
  83.                XMLElement var9 = (XMLElement)var7.nextElement();
  84.                this.write(var9, var2, var3 + 4);
  85.             }
  86.  
  87.             if (var2) {
  88.                for(int var10 = 0; var10 < var3; ++var10) {
  89.                   this.writer.print(' ');
  90.                }
  91.             }
  92.  
  93.             this.writer.print("</" + var1.getName() + ">");
  94.             if (var2) {
  95.                this.writer.println();
  96.             }
  97.          } else {
  98.             this.writer.print("/>");
  99.             if (var2) {
  100.                this.writer.println();
  101.             }
  102.          }
  103.       }
  104.  
  105.       this.writer.flush();
  106.    }
  107.  
  108.    private void writeEncoded(String var1) {
  109.       for(int var2 = 0; var2 < var1.length(); ++var2) {
  110.          char var3 = var1.charAt(var2);
  111.          switch (var3) {
  112.             case '\n':
  113.             case '\r':
  114.                this.writer.print(var3);
  115.                break;
  116.             case '"':
  117.                this.writer.print(""");
  118.                break;
  119.             case '&':
  120.                this.writer.print("&");
  121.                break;
  122.             case '\'':
  123.                this.writer.print("'");
  124.                break;
  125.             case '<':
  126.                this.writer.print("<");
  127.                break;
  128.             case '>':
  129.                this.writer.print(">");
  130.                break;
  131.             default:
  132.                if (var3 >= ' ' && var3 <= '~') {
  133.                   this.writer.print(var3);
  134.                } else {
  135.                   this.writer.print("&#x");
  136.                   this.writer.print(Integer.toString(var3, 16));
  137.                   this.writer.print(';');
  138.                }
  139.          }
  140.       }
  141.  
  142.    }
  143. }
  144.