home *** CD-ROM | disk | FTP | other *** search
/ PC Online 1999 November / PCONLINE_11_99.ISO / filesbbs / OS2 / APCHSSL2.ZIP / OS2HTTPD / jserv / com / kav / xml / HTMLPrinter.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-05-16  |  2.4 KB  |  112 lines

  1. package com.kav.xml;
  2.  
  3. import java.io.PrintWriter;
  4. import java.util.Hashtable;
  5. import org.w3c.dom.Attr;
  6. import org.w3c.dom.CDATASection;
  7. import org.w3c.dom.Element;
  8. import org.w3c.dom.NamedNodeMap;
  9. import org.w3c.dom.Node;
  10.  
  11. public class HTMLPrinter extends XMLPrinter {
  12.    public static final String BREAK = "BR";
  13.    public static final String PARAGRAPH = "P";
  14.    public static final String HORIZONTAL_RULE = "HR";
  15.    public static final String IMAGE = "IMG";
  16.    public static final String META = "META";
  17.    public static final String SCRIPT = "SCRIPT";
  18.    // $FF: renamed from: pw java.io.PrintWriter
  19.    private PrintWriter field_0;
  20.    private Hashtable specialElements;
  21.    private boolean useFormat;
  22.  
  23.    public HTMLPrinter(PrintWriter var1) {
  24.       this(var1, 2);
  25.    }
  26.  
  27.    public HTMLPrinter(PrintWriter var1, int var2) {
  28.       super(var1, var2);
  29.       this.useFormat = false;
  30.       super.setUnescapeCDATA(false);
  31.       this.field_0 = var1;
  32.       this.specialElements = getSpecialElements();
  33.    }
  34.  
  35.    public void setUseFormat(boolean var1) {
  36.       super.setUseFormat(var1);
  37.       this.useFormat = var1;
  38.    }
  39.  
  40.    protected boolean print(Node var1, String var2) {
  41.       if (var1 == null) {
  42.          return false;
  43.       } else {
  44.          switch (var1.getNodeType()) {
  45.             case 1:
  46.                Element var3 = (Element)var1;
  47.                String var4 = var3.getNodeName().toUpperCase();
  48.                if (var3.hasChildNodes() || this.specialElements.get(var4) == null) {
  49.                   return super.print(var1, var2);
  50.                }
  51.  
  52.                this.field_0.print("<");
  53.                this.field_0.print(var3.getNodeName());
  54.                NamedNodeMap var11 = var3.getAttributes();
  55.                int var12 = 0;
  56.                if (var11 != null) {
  57.                   var12 = var11.getLength();
  58.                }
  59.  
  60.                int var9 = 0;
  61.  
  62.                for(; var9 < var12; ++var9) {
  63.                   Attr var7 = (Attr)var11.item(var9);
  64.                   String var8 = var7.getValue();
  65.                   this.field_0.print(" ");
  66.                   this.field_0.print(var7.getName());
  67.                   if (var8 != null) {
  68.                      this.field_0.print("=\"");
  69.                      this.field_0.print(var8);
  70.                      this.field_0.print("\"");
  71.                   }
  72.                }
  73.  
  74.                this.field_0.print(">");
  75.                if (this.useFormat) {
  76.                   Node var10 = var1.getNextSibling();
  77.                   if (var10 == null || var10.getNodeType() != 3) {
  78.                      this.field_0.println();
  79.                      return true;
  80.                   }
  81.                }
  82.                break;
  83.             case 2:
  84.             case 3:
  85.             default:
  86.                return super.print(var1, var2);
  87.             case 4:
  88.                Node var5 = var1.getParentNode();
  89.                if (var5.getNodeType() == 1 && var1.getNodeName().equalsIgnoreCase("SCRIPT")) {
  90.                   String var6 = ((CDATASection)var1).getData();
  91.                   super.printUTF8Chars(var6.toCharArray());
  92.                   return false;
  93.                }
  94.  
  95.                super.print(var1, var2);
  96.          }
  97.  
  98.          return false;
  99.       }
  100.    }
  101.  
  102.    private static Hashtable getSpecialElements() {
  103.       Hashtable var0 = new Hashtable();
  104.       var0.put("BR", new Integer(0));
  105.       var0.put("HR", new Integer(1));
  106.       var0.put("IMG", new Integer(2));
  107.       var0.put("META", new Integer(3));
  108.       var0.put("P", new Integer(4));
  109.       return var0;
  110.    }
  111. }
  112.