Xml.java
上传用户:haojie1228
上传日期:2022-08-08
资源大小:347k
文件大小:5k
源码类别:

通讯/手机编程

开发平台:

Java

  1. /* kXML
  2.  *
  3.  * The contents of this file are subject to the Enhydra Public License
  4.  * Version 1.1 (the "License"); you may not use this file except in
  5.  * compliance with the License. You may obtain a copy of the License
  6.  * on the Enhydra web site ( http://www.enhydra.org/ ).
  7.  *
  8.  * Software distributed under the License is distributed on an "AS IS"
  9.  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
  10.  * the License for the specific terms governing rights and limitations
  11.  * under the License.
  12.  *
  13.  * The Initial Developer of kXML is Stefan Haustein. Copyright (C)
  14.  * 2000, 2001 Stefan Haustein, D-46045 Oberhausen (Rhld.),
  15.  * Germany. All Rights Reserved.
  16.  *
  17.  * Contributor(s): Paul Palaszewski, Wilhelm Fitzpatrick, 
  18.  *                 Eric Foster-Johnson
  19.  *
  20.  * */
  21. package org.kxml;
  22. import java.io.*;
  23. import java.util.*;
  24. /** A class containing several static xml methods, mainly for escaping
  25.     special characters like angle brakets and quotes. This class
  26.     contains also some (partially shared) constants for the parser and
  27.     kDOM. */
  28. public class Xml {
  29.     public static final String NO_NAMESPACE = "";
  30.    
  31.     /** XmlReader return value before the first call to next or skip */
  32.     public static final int START_DOCUMENT = 0;
  33.     /** Integer constant for comments */
  34.     public static final int COMMENT = 1;
  35.     /** Integer constant for doctype */
  36.     public static final int DOCTYPE = 2;
  37.     /** Integer constant for elements */
  38.     public static final int ELEMENT = 4;
  39.     /** Integer constant returned by ParseEvent.getType if the end of
  40. the document has been reached */
  41.     public static final int END_DOCUMENT = 8;
  42.     
  43.     /** Integer constant assigned to an EndTag parse event */
  44.     public static final int END_TAG = 16;
  45.     /** Integer constant assigned to a processing instruction */ 
  46.     public static final int PROCESSING_INSTRUCTION = 32;
  47.     
  48.     /** Integer constant assigned to StartTag parse event */
  49.     public static final int START_TAG = 64;
  50.     /** Integer constant assigned to text nodes and events */
  51.     public static final int TEXT = 128;
  52.     /** Integer constant for whitespace nodes and events */
  53.     public static final int WHITESPACE = 256;
  54.     /** minimum escaping, quotes are not escaped */
  55.     public static final int ENCODE_MIN = 0;
  56.     /** forces escaping of quotes */
  57.     public static final int ENCODE_QUOT = 1;
  58.     /** forces escaping of all character coded greater than 127 */
  59.     
  60.     public static int ENCODE_128 = 2;
  61.     /** Constant identifying wap extension events */
  62.     public static final int WAP_EXTENSION = 1024;
  63.     /** convenience method for encode (String raw, ENCODE_MIN) */
  64.     
  65.     public static String encode (String raw) {
  66. return encode (raw, ENCODE_MIN);
  67.     }
  68.     /* encodes an attribute with the given name and value.  A single
  69. space is inserted before the name of the attribute 
  70.     public static String encodeAttr (String name, String value) {
  71. return " "+name+"="" + encode (value, ENCODE_QUOT) + """;
  72.     }
  73. */
  74.     /** encodes a string escaping less than etc. */
  75.     public static String encode (String raw, int flags) {
  76.       
  77. int len = raw.length ();
  78.     
  79. StringBuffer cooked = new StringBuffer (raw.length ());
  80. for (int i = 0; i < len; i++) {
  81.     char c = raw.charAt (i);
  82.   
  83.     switch (c) {
  84.     case '<': cooked.append ("&lt;"); break;
  85.     case '>': cooked.append ("&gt;"); break;
  86.     case '&': cooked.append ("&amp;"); break;
  87.     case '"': 
  88.     if ((flags & ENCODE_QUOT) != 0) 
  89. cooked.append ("&quot;"); 
  90.     else
  91. cooked.append ('"');
  92. }
  93. break;
  94.     default:
  95. if (c >= 128 && ((flags & ENCODE_128) != 0)) 
  96.     cooked.append ("&#"+((int) c)+";");
  97. else
  98.     cooked.append (c);
  99.     }
  100. }
  101. return cooked.toString ();
  102.     }
  103.     /* quotes a string by adding quote chars at the beginning
  104. and the end and escaping all quotes and XML special
  105. chars contained in the string
  106.     public static String quote (String q) {
  107. return """ + encode (q, ENCODE_QUOT) + """;
  108.     }
  109.  */
  110.     /*  like String.trim, but additionally all groups of one or more
  111. whitespace characters in the string are replaced by a single
  112. space (0x040)
  113.     public static String trim (String s) {
  114. char [] buf = new char [s.length ()]; 
  115. boolean ignoring = false;
  116. int targetPos = 0;
  117. for (int i = 0; i < s.length (); i++) {
  118.     char c = s.charAt (i);
  119.     
  120.     if (c <= ' ') 
  121. ignoring = true;
  122.     else {
  123. if (ignoring) {
  124.     if (targetPos != 0) buf [targetPos++] = ' '; 
  125.     ignoring = false;
  126. }
  127. buf [targetPos++] = c;
  128.     }
  129. }
  130. return new String (buf, 0, targetPos);
  131.     }
  132.  */
  133. }