home *** CD-ROM | disk | FTP | other *** search
/ PC Professionell 2003 July / PCpro_2003_07.ISO / vollvers / edhtml / EdHTMLv5.0.exe / Main / SitemapParser.class (.txt) < prev    next >
Encoding:
Java Class File  |  2003-05-14  |  11.6 KB  |  623 lines

  1. import java.awt.Image;
  2. import java.io.BufferedInputStream;
  3. import java.io.DataInputStream;
  4. import java.net.MalformedURLException;
  5. import java.net.URL;
  6. import java.util.Vector;
  7.  
  8. class SitemapParser {
  9.    private String m_sitemap = new String();
  10.    private boolean m_fSuccess;
  11.    private ElementList m_list;
  12.    private HHCtrl m_applet;
  13.    private boolean m_EOF;
  14.    private DataInputStream m_dis;
  15.    private boolean m_fUseFolders;
  16.    private int m_styleSet;
  17.    private long m_exWinStyle = 8388661L;
  18.    private long m_winStyle = 512L;
  19.    private String m_font = "";
  20.    private int m_pos;
  21.    private int m_level;
  22.    static String[] rgEntities = new String[]{"AElig", "├å", "Aacute", "├ü", "Acirc", "├é", "Agrave", "├Ç", "Aring", "├à", "Atilde", "├â", "Auml", "├ä", "Ccedil", "├ç", "Dstrok", "├É", "ETH", "├É", "Eacute", "├ë", "Ecirc", "├è", "Egrave", "├ê", "Euml", "├ï", "Iacute", "├ì", "Icirc", "├Ä", "Igrave", "├î", "Iuml", "├Å", "Ntilde", "├æ", "Oacute", "├ô", "Ocirc", "├ö", "Ograve", "├Æ", "Oslash", "├ÿ", "Otilde", "├ò", "Ouml", "├û", "THORN", "├₧", "Uacute", "├Ü", "Ucirc", "├¢", "Ugrave", "├Ö", "Uuml", "├£", "Yacute", "├¥", "aacute", "├í", "acirc", "├ó", "acute", "┬┤", "aelig", "├ª", "agrave", "├á", "amp", "&", "aring", "├Ñ", "atilde", "├ú", "auml", "├ñ", "brkbar", "┬ª", "brvbar", "┬ª", "ccedil", "├º", "cedil", "┬╕", "cent", "┬ó", "copy", "┬⌐", "curren", "┬ñ", "deg", "┬░", "die", "┬¿", "divide", "├╖", "eacute", "├⌐", "ecirc", "├¬", "egrave", "├¿", "eth", "├░", "euml", "├½", "frac12", "┬╜", "frac14", "┬╝", "frac34", "┬╛", "gt", ">", "hibar", "┬»", "iacute", "├¡", "icirc", "├«", "iexcl", "┬í", "igrave", "├¼", "iquest", "┬┐", "iuml", "├»", "laquo", "┬½", "lt", "<", "macr", "┬»", "micro", "┬╡", "middot", "┬╖", "nbsp", "┬á", "not", "┬¼", "ntilde", "├▒", "oacute", "├│", "ocirc", "├┤", "ograve", "├▓", "ordf", "┬¬", "ordm", "┬║", "oslash", "├╕", "otilde", "├╡", "ouml", "├╢", "para", "┬╢", "plusmn", "┬▒", "pound", "┬ú", "quot", "\"", "raquo", "┬╗", "reg", "┬«", "sect", "┬º", "shy", "\u00ad", "sup1", "┬╣", "sup2", "┬▓", "sup3", "┬│", "szlig", "├ƒ", "thorn", "├╛", "times", "├ù", "trade", "\u0099", "uacute", "├║", "ucirc", "├╗", "ugrave", "├╣", "uml", "┬¿", "uuml", "├╝", "yacute", "├╜", "yen", "┬Ñ", "yuml", "├┐", "", ""};
  23.    private boolean m_fFoundSiteProps;
  24.    private Vector m_categories = new Vector();
  25.    private Vector m_types = new Vector();
  26.    private String m_frame = "";
  27.    private String m_imageList;
  28.    private int m_imageWidth = 16;
  29.    private int m_numImages;
  30.  
  31.    long getWinStyle() {
  32.       return this.m_winStyle;
  33.    }
  34.  
  35.    public boolean success() {
  36.       return this.m_fSuccess;
  37.    }
  38.  
  39.    private String getNextTag() {
  40.       if (!this.hasMoreTags()) {
  41.          return null;
  42.       } else {
  43.          for(this.m_pos = this.m_sitemap.indexOf("<", this.m_pos); this.m_sitemap.indexOf("!--", this.m_pos) == 1; this.m_pos = this.m_sitemap.indexOf("<", this.m_pos)) {
  44.             this.m_pos = this.findTagEnd(this.m_pos, true);
  45.             if (this.m_pos == -1) {
  46.                return null;
  47.             }
  48.          }
  49.  
  50.          int var2 = this.m_pos;
  51.  
  52.          while(true) {
  53.             int var1 = this.m_sitemap.indexOf(">", var2);
  54.             if (var1 != -1) {
  55.                var2 = this.m_sitemap.indexOf("<", var2 + 1);
  56.                if (var2 == -1 || var2 > var1) {
  57.                   if (var1 == -1) {
  58.                      return null;
  59.                   } else {
  60.                      String var3 = this.m_sitemap.substring(this.m_pos + 1, var1).trim();
  61.                      this.m_pos = var1;
  62.                      return var3;
  63.                   }
  64.                }
  65.  
  66.                var2 = var1 + 1;
  67.             } else {
  68.                this.getChunk();
  69.             }
  70.          }
  71.       }
  72.    }
  73.  
  74.    private boolean getChunk() {
  75.       int var1 = 0;
  76.       String var2 = null;
  77.       int var3 = this.m_sitemap.length();
  78.  
  79.       try {
  80.          while(var1++ < 5 && (var2 = this.m_dis.readLine()) != null) {
  81.             this.m_sitemap = this.m_sitemap + var2;
  82.          }
  83.       } catch (Exception var4) {
  84.          this.m_EOF = true;
  85.          return false;
  86.       }
  87.  
  88.       if (var2 == null) {
  89.          this.m_EOF = true;
  90.          return this.m_sitemap.length() > var3;
  91.       } else {
  92.          return true;
  93.       }
  94.    }
  95.  
  96.    private int findTagEnd(int var1, boolean var2) {
  97.       int var4 = var1;
  98.  
  99.       while(true) {
  100.          int var3 = this.m_sitemap.indexOf(var2 ? "-->" : ">", var4);
  101.          if (var3 != -1) {
  102.             var4 = this.m_sitemap.indexOf("<", var4 + 1);
  103.             if (var4 == -1 || var4 > var3) {
  104.                return var3;
  105.             }
  106.  
  107.             var4 = var3 + 1;
  108.          } else {
  109.             this.getChunk();
  110.          }
  111.       }
  112.    }
  113.  
  114.    int getStyleSet() {
  115.       return this.m_styleSet;
  116.    }
  117.  
  118.    boolean useFolders() {
  119.       return this.m_fUseFolders;
  120.    }
  121.  
  122.    Vector getCategories() {
  123.       return this.m_categories;
  124.    }
  125.  
  126.    String getFrame() {
  127.       return this.m_frame;
  128.    }
  129.  
  130.    private void parseSitemap() {
  131.       boolean var16 = false;
  132.       Object var18 = null;
  133.       int var19 = 0;
  134.       boolean var20 = true;
  135.       int var22 = 0;
  136.  
  137.       for(int var23 = 0; this.hasMoreTags(); this.tossParsed()) {
  138.          String var1 = this.getNextTag();
  139.          if (this.getTagName(var1).equalsIgnoreCase("OBJECT") && !var16) {
  140.             String var2 = this.getTagParam(var1, "type");
  141.             if (var2.equalsIgnoreCase("text/site properties")) {
  142.                this.m_fFoundSiteProps = true;
  143.             }
  144.  
  145.             while(this.hasMoreTags()) {
  146.                var1 = this.getNextTag();
  147.                if (this.getTagName(var1).equalsIgnoreCase("/OBJECT")) {
  148.                   break;
  149.                }
  150.  
  151.                if (this.getTagName(var1).equalsIgnoreCase("param")) {
  152.                   if (this.getTagParam(var1, "name").equalsIgnoreCase("FRAME") || this.getTagParam(var1, "name").equalsIgnoreCase("FRAMENAME")) {
  153.                      this.m_frame = new String(this.getTagParam(var1, "value"));
  154.                   }
  155.  
  156.                   if (this.getTagParam(var1, "name").equalsIgnoreCase("FONT")) {
  157.                      this.m_font = new String(this.getTagParam(var1, "value"));
  158.                   }
  159.  
  160.                   if (this.getTagParam(var1, "name").equalsIgnoreCase("CATEGORY")) {
  161.                      this.m_categories.addElement(new String(this.getTagParam(var1, "value")));
  162.                   }
  163.  
  164.                   if (this.getTagParam(var1, "name").equalsIgnoreCase("TYPE")) {
  165.                      this.m_types.addElement(new String(this.getTagParam(var1, "value")));
  166.                   }
  167.  
  168.                   if (this.getTagParam(var1, "name").equalsIgnoreCase("IMAGELIST")) {
  169.                      this.m_imageList = new String(this.getTagParam(var1, "value"));
  170.                   }
  171.  
  172.                   if (this.getTagParam(var1, "name").equalsIgnoreCase("IMAGE WIDTH")) {
  173.                      this.m_imageWidth = Integer.parseInt(this.getTagParam(var1, "value"));
  174.                   }
  175.  
  176.                   if (this.getTagParam(var1, "name").equalsIgnoreCase("EXWINDOW STYLES")) {
  177.                      String var11 = new String(this.getTagParam(var1, "value"));
  178.                      if (var11.indexOf("0x") == 0 || var11.indexOf("0X") == 0) {
  179.                         var11 = var11.substring(2);
  180.  
  181.                         try {
  182.                            this.m_exWinStyle = Long.parseLong(var11, 16);
  183.                            this.m_styleSet |= 2;
  184.                         } catch (Exception var31) {
  185.                            this.m_exWinStyle = 0L;
  186.                         }
  187.                      }
  188.                   }
  189.  
  190.                   if (this.getTagParam(var1, "name").equalsIgnoreCase("WINDOW STYLES")) {
  191.                      String var34 = new String(this.getTagParam(var1, "value"));
  192.                      if (var34.indexOf("0x") == 0 || var34.indexOf("0X") == 0) {
  193.                         var34 = var34.substring(2);
  194.  
  195.                         try {
  196.                            this.m_winStyle = Long.parseLong(var34, 16);
  197.                            this.m_styleSet |= 1;
  198.                         } catch (Exception var30) {
  199.                            this.m_winStyle = 0L;
  200.                         }
  201.                      }
  202.                   }
  203.  
  204.                   if (this.getTagParam(var1, "name").equalsIgnoreCase("IMAGETYPE") && this.getTagParam(var1, "value").equalsIgnoreCase("FOLDER")) {
  205.                      this.m_fUseFolders = true;
  206.                   }
  207.  
  208.                   if (this.getTagParam(var1, "name").equalsIgnoreCase("NUMBERIMAGES")) {
  209.                      try {
  210.                         this.m_numImages = Integer.parseInt(this.getTagParam(var1, "value"));
  211.                      } catch (Exception var29) {
  212.                         this.m_numImages = 0;
  213.                      }
  214.                   }
  215.                }
  216.             }
  217.          }
  218.  
  219.          if (this.getTagName(var1).equalsIgnoreCase("OBJECT") && var16) {
  220.             String var32 = this.getTagParam(var1, "type");
  221.             if (var32 != null && !var32.equalsIgnoreCase("text/sitemap")) {
  222.                System.out.println("    discarded - not sitemap");
  223.             }
  224.  
  225.             String var3 = null;
  226.             String var4 = "";
  227.             String var5 = "";
  228.             String var6 = "";
  229.             int var13 = 0;
  230.             int var14 = -1;
  231.             int var15 = 0;
  232.             String var9 = "";
  233.             String var10 = "";
  234.             Vector var12 = null;
  235.             boolean var21 = false;
  236.             String var7 = "";
  237.             String var8 = "";
  238.  
  239.             while(this.hasMoreTags()) {
  240.                var1 = this.getNextTag();
  241.                if (this.getTagName(var1).equalsIgnoreCase("param")) {
  242.                   if (this.getTagParam(var1, "name").equalsIgnoreCase("NAME")) {
  243.                      if (var3 == null) {
  244.                         var3 = new String(replaceEscapes(this.getTagParam(var1, "value") == null ? "" : this.getTagParam(var1, "value")));
  245.                      } else {
  246.                         if (var15 > 0) {
  247.                            if (var12 == null) {
  248.                               var12 = new Vector();
  249.                            }
  250.  
  251.                            var12.addElement(var9 + ";" + var10);
  252.                         }
  253.  
  254.                         ++var15;
  255.                         var9 = new String(replaceEscapes(this.getTagParam(var1, "value") == null ? "" : replaceEscapes(this.getTagParam(var1, "value"))));
  256.                         var10 = "";
  257.                      }
  258.                   }
  259.  
  260.                   if (this.getTagParam(var1, "name").equalsIgnoreCase("SEE ALSO")) {
  261.                      var8 = new String(this.getTagParam(var1, "value") == null ? "" : this.getTagParam(var1, "value"));
  262.                   }
  263.  
  264.                   if (this.getTagParam(var1, "name").equalsIgnoreCase("URL") || this.getTagParam(var1, "name").equalsIgnoreCase("LOCAL")) {
  265.                      if (var15 == 0) {
  266.                         var4 = new String(this.getTagParam(var1, "value") == null ? "" : this.getTagParam(var1, "value"));
  267.                      } else {
  268.                         var10 = new String(this.getTagParam(var1, "value") == null ? "" : this.getTagParam(var1, "value"));
  269.                      }
  270.                   }
  271.  
  272.                   if (this.getTagParam(var1, "name").equalsIgnoreCase("Merge")) {
  273.                      var21 = true;
  274.                      var7 = new String(this.getTagParam(var1, "value") == null ? "" : this.getTagParam(var1, "value"));
  275.                      if (var3 == null) {
  276.                         var3 = "";
  277.                      }
  278.  
  279.                      if (this.m_level == 1) {
  280.                         try {
  281.                            URL var38 = new URL(var7);
  282.                            new SitemapParser(var38, this.m_list, this.m_applet);
  283.                         } catch (MalformedURLException var28) {
  284.                            try {
  285.                               URL var24 = new URL(this.m_applet.getDocumentBase(), var7);
  286.                               new SitemapParser(var24, this.m_list, this.m_applet);
  287.                            } catch (MalformedURLException var27) {
  288.                               this.m_applet.showStatus(this.m_applet.getString("cnt.merge.err") + " " + var7);
  289.                            }
  290.                         }
  291.                      }
  292.                   }
  293.  
  294.                   if (this.getTagParam(var1, "name").equalsIgnoreCase("SECONDARY")) {
  295.                      new String(this.getTagParam(var1, "value") == null ? "" : this.getTagParam(var1, "value"));
  296.                   }
  297.  
  298.                   if (this.getTagParam(var1, "name").equalsIgnoreCase("FRAME") || this.getTagParam(var1, "name").equalsIgnoreCase("FRAMENAME")) {
  299.                      var6 = new String(this.getTagParam(var1, "value") == null ? "" : this.getTagParam(var1, "value"));
  300.                   }
  301.  
  302.                   if (this.getTagParam(var1, "name").equalsIgnoreCase("IMAGENUMBER")) {
  303.                      try {
  304.                         var14 = Integer.valueOf(this.getTagParam(var1, "value"));
  305.                      } catch (Exception var26) {
  306.                         var14 = -1;
  307.                      }
  308.                   }
  309.  
  310.                   if (this.getTagParam(var1, "name").equalsIgnoreCase("NEW")) {
  311.                      try {
  312.                         var13 = Integer.valueOf(this.getTagParam(var1, "value"));
  313.                      } catch (Exception var25) {
  314.                         var13 = 0;
  315.                      }
  316.                   }
  317.                }
  318.  
  319.                if (this.getTagName(var1).equalsIgnoreCase("/OBJECT")) {
  320.                   if (var15 > 0) {
  321.                      if (var12 == null) {
  322.                         var12 = new Vector();
  323.                      }
  324.  
  325.                      var12.addElement(var9 + ";" + var10);
  326.                   }
  327.  
  328.                   if (var3 != null) {
  329.                      Element var17 = new Element(var3, this.m_level - 1, (Image)null, var4, var6, this.m_applet, 1);
  330.                      var17.m_isNew = var13;
  331.                      var17.m_imgNum = var14 - 1;
  332.                      var17.m_related = var12;
  333.                      var20 = true;
  334.                      if (var21) {
  335.                         var17.m_merge = true;
  336.                         var17.m_url = var7;
  337.                      }
  338.  
  339.                      var17.m_seeAlso = var8;
  340.                      var19 = this.m_level;
  341.                      if (!var21 || this.m_level > 1) {
  342.                         this.m_list.addElement(var17);
  343.                      }
  344.  
  345.                      Object var36 = null;
  346.                      ++var23;
  347.                      if (var23 % 10 == 0) {
  348.                         this.m_applet.showStatus(this.m_applet.getString("cnt.load.status2") + " (" + var23 + ")");
  349.                      }
  350.                      break;
  351.                   }
  352.                }
  353.             }
  354.          }
  355.  
  356.          if (this.getTagName(var1).equalsIgnoreCase("UL")) {
  357.             if (var20) {
  358.                ++this.m_level;
  359.                var20 = false;
  360.             } else {
  361.                ++var22;
  362.             }
  363.          }
  364.  
  365.          if (this.getTagName(var1).equalsIgnoreCase("/UL")) {
  366.             if (var22 == 0) {
  367.                this.m_level += -1;
  368.             } else {
  369.                --var22;
  370.             }
  371.  
  372.             if (this.m_level < 0) {
  373.                this.m_level = 0;
  374.             }
  375.          }
  376.  
  377.          if (this.getTagName(var1).equalsIgnoreCase("LI")) {
  378.             var16 = true;
  379.          }
  380.  
  381.          if (this.getTagName(var1).equalsIgnoreCase("/LI")) {
  382.             var16 = false;
  383.          }
  384.       }
  385.  
  386.    }
  387.  
  388.    String getFont() {
  389.       return this.m_font;
  390.    }
  391.  
  392.    private void tossParsed() {
  393.       this.m_sitemap = this.m_sitemap.substring(this.m_pos);
  394.       this.m_pos = 0;
  395.    }
  396.  
  397.    boolean isParsed() {
  398.       return this.m_fSuccess;
  399.    }
  400.  
  401.    int getImageWidth() {
  402.       return this.m_imageWidth;
  403.    }
  404.  
  405.    boolean foundSiteProps() {
  406.       return this.m_fFoundSiteProps;
  407.    }
  408.  
  409.    long getExWinStyle() {
  410.       return this.m_exWinStyle;
  411.    }
  412.  
  413.    SitemapParser(URL var1, ElementList var2, HHCtrl var3) {
  414.       this.m_list = var2;
  415.       this.m_applet = var3;
  416.       this.m_applet.showStatus(this.m_applet.getString("cnt.load.status"));
  417.  
  418.       try {
  419.          BufferedInputStream var4 = new BufferedInputStream(var1.openStream(), 8192);
  420.          this.m_dis = (DataInputStream)Runtime.getRuntime().getLocalizedInputStream(new DataInputStream(var4));
  421.          this.getChunk();
  422.          this.parseSitemap();
  423.          this.m_fSuccess = true;
  424.       } catch (Exception var5) {
  425.       }
  426.    }
  427.  
  428.    String getImageList() {
  429.       return this.m_imageList;
  430.    }
  431.  
  432.    static String replaceEscapes(String var0) {
  433.       if (var0 == null) {
  434.          return "";
  435.       } else if (var0.indexOf("%") == -1 && var0.indexOf("\\") == -1 && var0.indexOf("&") == -1) {
  436.          return var0;
  437.       } else {
  438.          int var15 = 0;
  439.          String var1 = "";
  440.  
  441.          try {
  442.             while(var15 < var0.length()) {
  443.                int var4 = 0;
  444.                if (var0.charAt(var15) == '%') {
  445.                   ++var15;
  446.                   char var13 = var0.charAt(var15);
  447.                   if (Character.isDigit(var13)) {
  448.                      var4 = var13 - 48;
  449.                      ++var15;
  450.                   } else if (var13 >= 'a' && var13 <= 'f') {
  451.                      var4 += var13 - 97 + 10;
  452.                      ++var15;
  453.                   } else if (var13 >= 'A' && var13 <= 'F') {
  454.                      var4 += var13 - 65 + 10;
  455.                      ++var15;
  456.                   }
  457.  
  458.                   if (var15 < var0.length()) {
  459.                      var13 = var0.charAt(var15);
  460.                      if (Character.isDigit(var13)) {
  461.                         var4 = var4 * 16 + var13 - 48;
  462.                         ++var15;
  463.                      } else if (var13 >= 'a' && var13 <= 'f') {
  464.                         var4 = var4 * 16 + var13 - 97 + 10;
  465.                         ++var15;
  466.                      } else if (var13 >= 'A' && var13 <= 'F') {
  467.                         var4 = var4 * 16 + var13 - 65 + 10;
  468.                         ++var15;
  469.                      }
  470.                   }
  471.  
  472.                   if (var4 > 0) {
  473.                      var1 = var1 + (char)var4;
  474.                   }
  475.                } else if (var0.charAt(var15) == '\\') {
  476.                   ++var15;
  477.                   char var2 = var0.charAt(var15);
  478.                   if (var2 != 'n' && var2 != 'r' && var2 != 't') {
  479.                      if (var2 >= '0' && var2 <= '7') {
  480.                         var4 = var2 - 48;
  481.                         ++var15;
  482.                         if (var15 < var0.length() - 1) {
  483.                            var2 = var0.charAt(var15);
  484.                            if (var2 >= '0' && var2 <= '7') {
  485.                               var4 = var4 * 8 + var2 - 48;
  486.                               ++var15;
  487.                            }
  488.  
  489.                            if (var15 < var0.length() - 1) {
  490.                               var2 = var0.charAt(var15);
  491.                               if (var2 >= '0' && var2 <= '7') {
  492.                                  var4 = var4 * 8 + var2 - 48;
  493.                                  ++var15;
  494.                               }
  495.                            }
  496.                         }
  497.  
  498.                         if (var4 > 0) {
  499.                            var1 = var1 + (char)var4;
  500.                         }
  501.                      } else if (var2 == 'x' || var2 == 'X') {
  502.                         var4 = 0;
  503.                         var15 += 2;
  504.                         if (var15 != -1 && var15 < var0.length() - 1) {
  505.                            var2 = var0.charAt(var15);
  506.                            if (Character.isDigit(var2)) {
  507.                               var4 = var2 - 48;
  508.                               ++var15;
  509.                            } else if (var2 >= 'a' && var2 <= 'f') {
  510.                               var4 += var2 - 97 + 10;
  511.                               ++var15;
  512.                            } else if (var2 >= 'A' && var2 <= 'F') {
  513.                               var4 += var2 - 65 + 10;
  514.                               ++var15;
  515.                            }
  516.  
  517.                            if (var15 < var0.length()) {
  518.                               var2 = var0.charAt(var15);
  519.                               if (Character.isDigit(var2)) {
  520.                                  var4 = var4 * 16 + var2 - 48;
  521.                                  ++var15;
  522.                               } else if (var2 >= 'a' && var2 <= 'f') {
  523.                                  var4 = var4 * 16 + var2 - 97 + 10;
  524.                                  ++var15;
  525.                               } else if (var2 >= 'A' && var2 <= 'F') {
  526.                                  var4 = var4 * 16 + var2 - 65 + 10;
  527.                                  ++var15;
  528.                               }
  529.                            }
  530.  
  531.                            if (var4 > 0) {
  532.                               var1 = var1 + (char)var4;
  533.                            }
  534.                         }
  535.                      }
  536.                   } else {
  537.                      var1 = var1 + ' ';
  538.                      ++var15;
  539.                   }
  540.                } else if (var0.charAt(var15) != '&') {
  541.                   var1 = var1 + var0.charAt(var15);
  542.                   ++var15;
  543.                } else if (var0.charAt(var15 + 1) == '#') {
  544.                   var15 += 2;
  545.  
  546.                   for(var4 = 0; var0.charAt(var15) != ';'; ++var15) {
  547.                      if (var0.charAt(var15) >= '0' && var0.charAt(var15) <= '9') {
  548.                         var4 = var4 * 10 + (var0.charAt(var15) - 48);
  549.                      }
  550.                   }
  551.  
  552.                   if (var4 > 0) {
  553.                      var1 = var1 + (char)var4;
  554.                   }
  555.  
  556.                   ++var15;
  557.                } else {
  558.                   int var6;
  559.                   for(var6 = var15 + 1; var0.charAt(var6) != ';' && var6 < var0.length() - 1; ++var6) {
  560.                   }
  561.  
  562.                   String var7 = var0.substring(var15 + 1, var6);
  563.                   var15 = var6 + 1;
  564.  
  565.                   int var5;
  566.                   for(var5 = 0; rgEntities[var5 * 2].length() > 0; ++var5) {
  567.                      if (var7.equalsIgnoreCase(rgEntities[var5 * 2])) {
  568.                         var1 = var1 + rgEntities[var5 * 2 + 1];
  569.                         break;
  570.                      }
  571.                   }
  572.  
  573.                   if (!var7.equalsIgnoreCase(rgEntities[var5 * 2])) {
  574.                      var1 = var1 + "?";
  575.                   }
  576.                }
  577.             }
  578.          } catch (Exception var8) {
  579.             var1 = var1 + var0.charAt(var15 - 1);
  580.          }
  581.  
  582.          return var1;
  583.       }
  584.    }
  585.  
  586.    private String getTagParam(String var1, String var2) {
  587.       String var4 = var1;
  588.       String var3 = null;
  589.  
  590.       boolean var5;
  591.       for(var5 = false; var4.toUpperCase().indexOf(var2.toUpperCase()) != -1; var4 = var3) {
  592.          var3 = var4.substring(var4.toUpperCase().indexOf(var2.toUpperCase()) + var2.length(), var4.length()).trim();
  593.          if (var3.startsWith("=")) {
  594.             var3 = var3.substring(1, var3.length()).trim();
  595.             var5 = true;
  596.             break;
  597.          }
  598.       }
  599.  
  600.       if (var5) {
  601.          if (var3.startsWith("\"")) {
  602.             return var3.indexOf("\"", 1) != -1 ? var3.substring(1, var3.indexOf("\"", 1)) : null;
  603.          } else {
  604.             return var3.indexOf(" ") != -1 ? var3.substring(0, var3.indexOf(" ")).trim() : var3.trim();
  605.          }
  606.       } else {
  607.          return null;
  608.       }
  609.    }
  610.  
  611.    private boolean hasMoreTags() {
  612.       if (this.m_sitemap.indexOf("<", this.m_pos) != -1) {
  613.          return true;
  614.       } else {
  615.          return this.getChunk() ? this.hasMoreTags() : false;
  616.       }
  617.    }
  618.  
  619.    private String getTagName(String var1) {
  620.       return var1.indexOf(" ") != -1 ? var1.substring(0, var1.indexOf(" ")) : var1;
  621.    }
  622. }
  623.