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

  1. package net.n3.nanoxml;
  2.  
  3. import java.io.CharArrayReader;
  4. import java.io.IOException;
  5. import java.io.Reader;
  6.  
  7. class XMLUtil {
  8.    static void skipComment(IXMLReader var0, IXMLEntityResolver var1) throws IOException, XMLParseException {
  9.       if (var0.read() != '-') {
  10.          skipTag(var0, '\u0000', var1);
  11.       } else {
  12.          int var2 = 0;
  13.  
  14.          while(true) {
  15.             char var3 = var0.read();
  16.             switch (var3) {
  17.                case '-':
  18.                   ++var2;
  19.                   break;
  20.                case '>':
  21.                   if (var2 == 2) {
  22.                      return;
  23.                   }
  24.                default:
  25.                   var2 = 0;
  26.             }
  27.          }
  28.       }
  29.    }
  30.  
  31.    static void skipTag(IXMLReader var0, char var1, IXMLEntityResolver var2) throws IOException, XMLParseException {
  32.       int var3 = 1;
  33.  
  34.       while(var3 > 0) {
  35.          char var4 = read(var0, (boolean[])null, var1, var2);
  36.          switch (var4) {
  37.             case '<':
  38.                ++var3;
  39.                break;
  40.             case '>':
  41.                --var3;
  42.          }
  43.       }
  44.  
  45.    }
  46.  
  47.    static String scanPublicID(StringBuffer var0, IXMLReader var1, char var2, IXMLEntityResolver var3) throws IOException, XMLParseException {
  48.       if (!checkLiteral(var1, var2, var3, "UBLIC")) {
  49.          return null;
  50.       } else {
  51.          skipWhitespace(var1, var2, (StringBuffer)null, (boolean[])null);
  52.          var0.append(scanString(var1, var2, false, var3));
  53.          skipWhitespace(var1, var2, (StringBuffer)null, (boolean[])null);
  54.          return scanString(var1, var2, false, var3);
  55.       }
  56.    }
  57.  
  58.    static String scanSystemID(IXMLReader var0, char var1, IXMLEntityResolver var2) throws IOException, XMLParseException {
  59.       if (!checkLiteral(var0, var1, var2, "YSTEM")) {
  60.          return null;
  61.       } else {
  62.          skipWhitespace(var0, var1, (StringBuffer)null, (boolean[])null);
  63.          return scanString(var0, var1, false, var2);
  64.       }
  65.    }
  66.  
  67.    static String scanIdentifier(IXMLReader var0, char var1, IXMLEntityResolver var2) throws IOException, XMLParseException {
  68.       StringBuffer var3 = new StringBuffer();
  69.  
  70.       while(true) {
  71.          char var4 = read(var0, (boolean[])null, var1, var2);
  72.          if (var4 != '_' && var4 != ':' && var4 != '-' && var4 != '.' && (var4 < 'a' || var4 > 'z') && (var4 < 'A' || var4 > 'Z') && (var4 < '0' || var4 > '9') && var4 <= '~') {
  73.             var0.unread(var4);
  74.             return var3.toString();
  75.          }
  76.  
  77.          var3.append(var4);
  78.       }
  79.    }
  80.  
  81.    static String scanString(IXMLReader var0, char var1, boolean var2, IXMLEntityResolver var3) throws IOException, XMLParseException {
  82.       StringBuffer var4 = new StringBuffer();
  83.       boolean[] var5 = new boolean[1];
  84.       char var6 = read(var0, (boolean[])null, var1, var3);
  85.       if (var6 != '\'' && var6 != '"') {
  86.          errorExpectedInput(var0.getSystemID(), var0.getLineNr(), "delimited string");
  87.       }
  88.  
  89.       while(true) {
  90.          char var7 = read(var0, var5, var1, var3);
  91.          if (!var5[0] && var7 == var1) {
  92.             var0.startNewStream(scanEntity(var5, var0, var1, var3));
  93.             var7 = var0.read();
  94.          }
  95.  
  96.          if (!var5[0] && var7 == var6) {
  97.             return var4.toString();
  98.          }
  99.  
  100.          if (var2 && var7 < ' ') {
  101.             var4.append(' ');
  102.          } else {
  103.             var4.append(var7);
  104.          }
  105.       }
  106.    }
  107.  
  108.    static Reader scanEntity(boolean[] var0, IXMLReader var1, char var2, IXMLEntityResolver var3) throws IOException, XMLParseException {
  109.       char var4 = var1.read();
  110.  
  111.       StringBuffer var5;
  112.       for(var5 = new StringBuffer(); var4 != ';'; var4 = var1.read()) {
  113.          var5.append(var4);
  114.       }
  115.  
  116.       String var6 = var5.toString();
  117.       if (var6.charAt(0) == '#') {
  118.          if (var0 != null) {
  119.             var0[0] = true;
  120.          }
  121.  
  122.          char[] var8 = new char[1];
  123.          if (var6.charAt(1) == 'x') {
  124.             var8[0] = (char)Integer.parseInt(var6.substring(2), 16);
  125.          } else {
  126.             var8[0] = (char)Integer.parseInt(var6.substring(1), 10);
  127.          }
  128.  
  129.          return new CharArrayReader(var8);
  130.       } else {
  131.          Reader var7 = var3.getEntity(var1, var6);
  132.          if (var7 == null) {
  133.             errorInvalidEntity(var1.getSystemID(), var1.getLineNr(), var6);
  134.          }
  135.  
  136.          return var7;
  137.       }
  138.    }
  139.  
  140.    static void skipWhitespace(IXMLReader var0, char var1, StringBuffer var2, boolean[] var3) throws IOException {
  141.       char var4;
  142.       if (var2 == null) {
  143.          do {
  144.             var4 = var0.read();
  145.          } while(var4 == ' ' || var4 == '\t' || var4 == '\n' || var4 == '\r');
  146.       } else {
  147.          while(true) {
  148.             var4 = var0.read();
  149.             if (var4 != ' ' && var4 != '\t' && var4 != '\n' && var4 != '\r') {
  150.                break;
  151.             }
  152.  
  153.             var2.append(var4);
  154.          }
  155.       }
  156.  
  157.       var0.unread(var4);
  158.       if (var3 != null) {
  159.          var3[0] = var4 == var1;
  160.       }
  161.  
  162.    }
  163.  
  164.    static char read(IXMLReader var0, boolean[] var1, char var2, IXMLEntityResolver var3) throws IOException, XMLParseException {
  165.       char var4 = var0.read();
  166.       if (var1 != null) {
  167.          var1[0] = false;
  168.       }
  169.  
  170.       if (var4 == var2) {
  171.          boolean[] var5 = new boolean[1];
  172.          var0.startNewStream(scanEntity(var5, var0, var2, var3));
  173.          if (var5[0]) {
  174.             var4 = var0.read();
  175.             if (var1 != null) {
  176.                var1[0] = true;
  177.             }
  178.          } else {
  179.             var4 = read(var0, (boolean[])null, var2, var3);
  180.          }
  181.       }
  182.  
  183.       return var4;
  184.    }
  185.  
  186.    static boolean checkLiteral(IXMLReader var0, char var1, IXMLEntityResolver var2, String var3) throws IOException, XMLParseException {
  187.       for(int var4 = 0; var4 < var3.length(); ++var4) {
  188.          char var5 = read(var0, (boolean[])null, var1, var2);
  189.          if (var5 != var3.charAt(var4)) {
  190.             return false;
  191.          }
  192.       }
  193.  
  194.       return true;
  195.    }
  196.  
  197.    static void errorExpectedInput(String var0, int var1, String var2) throws XMLParseException {
  198.       throw new XMLParseException(var0, var1, "Expected: " + var2);
  199.    }
  200.  
  201.    static void errorInvalidEntity(String var0, int var1, String var2) throws XMLParseException {
  202.       throw new XMLParseException(var0, var1, "Invalid entity: `&" + var2 + ";'");
  203.    }
  204.  
  205.    static void errorInvalidInput(String var0, int var1, String var2) throws XMLParseException {
  206.       throw new XMLParseException(var0, var1, "Invalid input: " + var2);
  207.    }
  208.  
  209.    static void errorWrongClosingTag(String var0, int var1, String var2, String var3) throws XMLParseException {
  210.       throw new XMLParseException(var0, var1, "Closing tag does not match opening tag: `" + var3 + "' != `" + var2 + "'");
  211.    }
  212.  
  213.    static void errorClosingTagNotEmpty(String var0, int var1) throws XMLParseException {
  214.       throw new XMLParseException(var0, var1, "Closing tag must be empty");
  215.    }
  216.  
  217.    static void errorMissingElement(String var0, int var1, String var2, String var3) throws XMLValidationException {
  218.       throw new XMLValidationException(1, var0, var1, var3, (String)null, (String)null, "Element " + var2 + " expects to have a " + var3);
  219.    }
  220.  
  221.    static void errorUnexpectedElement(String var0, int var1, String var2, String var3) throws XMLValidationException {
  222.       throw new XMLValidationException(2, var0, var1, var3, (String)null, (String)null, "Unexpected " + var3 + " in a " + var2);
  223.    }
  224.  
  225.    static void errorMissingAttribute(String var0, int var1, String var2, String var3) throws XMLValidationException {
  226.       throw new XMLValidationException(3, var0, var1, var2, var3, (String)null, "Element " + var2 + " expects an attribute named " + var3);
  227.    }
  228.  
  229.    static void errorUnexpectedAttribute(String var0, int var1, String var2, String var3) throws XMLValidationException {
  230.       throw new XMLValidationException(4, var0, var1, var2, var3, (String)null, "Element " + var2 + " did not expect an attribute " + "named " + var3);
  231.    }
  232.  
  233.    static void errorInvalidAttributeValue(String var0, int var1, String var2, String var3, String var4) throws XMLValidationException {
  234.       throw new XMLValidationException(5, var0, var1, var2, var3, var4, "Invalid value for attribute " + var3);
  235.    }
  236.  
  237.    static void errorMissingPCData(String var0, int var1, String var2) throws XMLValidationException {
  238.       throw new XMLValidationException(6, var0, var1, (String)null, (String)null, (String)null, "Missing #PCDATA in element " + var2);
  239.    }
  240.  
  241.    static void errorUnexpectedPCData(String var0, int var1, String var2) throws XMLValidationException {
  242.       throw new XMLValidationException(7, var0, var1, (String)null, (String)null, (String)null, "Unexpected #PCDATA in element " + var2);
  243.    }
  244.  
  245.    static void validationError(String var0, int var1, String var2, String var3, String var4, String var5) throws XMLValidationException {
  246.       throw new XMLValidationException(0, var0, var1, var3, var4, var5, var2);
  247.    }
  248. }
  249.