home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 2004 May / DPPCPRO0504.ISO / May / Seatools / SeaTools.iso / tools / en / webhelp / webhelp.jar / BsscXML / BsscXMLTokenizer.class (.txt) < prev    next >
Encoding:
Java Class File  |  2002-04-17  |  2.3 KB  |  198 lines

  1. package BsscXML;
  2.  
  3. import java.io.IOException;
  4. import java.io.Reader;
  5.  
  6. public class BsscXMLTokenizer {
  7.    private static final int buffersize = 128;
  8.    IBsscXMLParser m_out;
  9.  
  10.    private static final boolean isSpace(int var0) {
  11.       return var0 == 32 || var0 == 9 || var0 == 10 || var0 == 13;
  12.    }
  13.  
  14.    public int getAttribute(int var1, Reader var2) throws IOException, BsscXMLException {
  15.       StringBuffer var3 = new StringBuffer(128);
  16.       StringBuffer var4 = new StringBuffer(128);
  17.       if (isSpace(var1)) {
  18.          var1 = this.skipSpace(var2);
  19.       }
  20.  
  21.       while(var1 != -1 && isNameChar(var1)) {
  22.          var3.append((char)var1);
  23.          var1 = var2.read();
  24.       }
  25.  
  26.       if (var3.length() != 0 && var1 != -1) {
  27.          if (isSpace(var1)) {
  28.             var1 = this.skipSpace(var2);
  29.          }
  30.  
  31.          if (var1 == 61) {
  32.             var1 = this.skipSpace(var2);
  33.             if (var1 == 39 || var1 == 34) {
  34.                int var5 = var1;
  35.  
  36.                for(var1 = var2.read(); var1 != -1 && var1 != var5; var1 = var2.read()) {
  37.                   var4.append((char)var1);
  38.                }
  39.  
  40.                if (var1 == var5) {
  41.                   this.m_out.findAttr(var3.toString(), var4.toString());
  42.                }
  43.  
  44.                var1 = var2.read();
  45.             }
  46.          }
  47.       }
  48.  
  49.       return var1;
  50.    }
  51.  
  52.    BsscXMLTokenizer(IBsscXMLParser var1) {
  53.       this.m_out = var1;
  54.    }
  55.  
  56.    public int getTag(int var1, Reader var2) throws BsscXMLException, IOException {
  57.       StringBuffer var3 = new StringBuffer(128);
  58.       if (isSpace(var1)) {
  59.          var1 = this.skipSpace(var2);
  60.       }
  61.  
  62.       while(var1 != -1 && isNameChar(var1)) {
  63.          var3.append((char)var1);
  64.          var1 = var2.read();
  65.       }
  66.  
  67.       if (var1 != -1) {
  68.          this.m_out.beginElement(var3.toString());
  69.          if (isSpace(var1)) {
  70.             var1 = this.skipSpace(var2);
  71.          }
  72.  
  73.          var1 = this.getAttributes(var1, var2);
  74.          if (var1 == 47) {
  75.             int var4 = var2.read();
  76.             if (var4 == 62) {
  77.                this.m_out.endElement("");
  78.                var1 = var2.read();
  79.             }
  80.          } else if (var1 == 62) {
  81.             return var2.read();
  82.          }
  83.       }
  84.  
  85.       return var1;
  86.    }
  87.  
  88.    public int skipHeader(Reader var1) throws IOException {
  89.       int var2 = -1;
  90.  
  91.       for(var2 = var1.read(); var2 != -1; var2 = var1.read()) {
  92.          if (var2 == 63) {
  93.             int var3 = var1.read();
  94.             if (var3 == 62) {
  95.                var2 = var1.read();
  96.                break;
  97.             }
  98.          }
  99.       }
  100.  
  101.       return var2;
  102.    }
  103.  
  104.    public int getAttributes(int var1, Reader var2) throws IOException, BsscXMLException {
  105.       while(var1 != -1 && var1 != 47 && var1 != 62) {
  106.          if (isNameChar(var1)) {
  107.             var1 = this.getAttribute(var1, var2);
  108.          } else {
  109.             var1 = -1;
  110.          }
  111.  
  112.          if (isSpace(var1)) {
  113.             var1 = this.skipSpace(var2);
  114.          }
  115.       }
  116.  
  117.       return var1;
  118.    }
  119.  
  120.    public int getEndTag(Reader var1) throws IOException, BsscXMLException {
  121.       StringBuffer var2 = new StringBuffer(128);
  122.       int var3 = -1;
  123.  
  124.       for(var3 = this.skipSpace(var1); var3 != -1 && isNameChar(var3); var3 = var1.read()) {
  125.          var2.append((char)var3);
  126.       }
  127.  
  128.       if (isSpace(var3)) {
  129.          var3 = this.skipSpace(var1);
  130.          if (var3 != 62) {
  131.             return -1;
  132.          }
  133.       }
  134.  
  135.       if (var3 != -1) {
  136.          this.m_out.endElement(var2.toString());
  137.          return this.skipSpace(var1);
  138.       } else {
  139.          return -1;
  140.       }
  141.    }
  142.  
  143.    private static final boolean isNameChar(int var0) {
  144.       return 97 <= var0 && var0 <= 122 || 65 <= var0 && var0 <= 90 || 48 <= var0 && var0 <= 57 || var0 == 46 || var0 == 45 || var0 == 95;
  145.    }
  146.  
  147.    void tokenize(Reader var1) {
  148.       StringBuffer var3 = new StringBuffer(128);
  149.  
  150.       try {
  151.          int var2 = this.skipHeader(var1);
  152.          if (isSpace(var2)) {
  153.             var2 = this.skipSpace(var1);
  154.          }
  155.  
  156.          this.m_out.beginDocument();
  157.  
  158.          do {
  159.             if (var2 == 60) {
  160.                if (var3.length() != 0 && var3.length() != 0) {
  161.                   this.m_out.beginElement("#text");
  162.                   this.m_out.findValue(var3.toString());
  163.                   this.m_out.endElement("");
  164.                   var3.setLength(0);
  165.                }
  166.  
  167.                int var4 = var1.read();
  168.                if (var4 == 47) {
  169.                   var2 = this.getEndTag(var1);
  170.                } else {
  171.                   var2 = this.getTag(var4, var1);
  172.                }
  173.  
  174.                if (isSpace(var2)) {
  175.                   var2 = this.skipSpace(var1);
  176.                }
  177.             } else {
  178.                var3.append((char)var2);
  179.                var2 = var1.read();
  180.             }
  181.          } while(var2 != -1);
  182.  
  183.          this.m_out.endDocument();
  184.       } catch (Exception var5) {
  185.          ((Throwable)var5).printStackTrace();
  186.       }
  187.    }
  188.  
  189.    public int skipSpace(Reader var1) throws IOException {
  190.       int var2 = -1;
  191.  
  192.       for(var2 = var1.read(); var2 != -1 && isSpace(var2); var2 = var1.read()) {
  193.       }
  194.  
  195.       return var2;
  196.    }
  197. }
  198.