ParseEvent.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.parser;
  22. import java.util.*;
  23. import java.io.IOException;
  24. import org.kxml.*;
  25. /** Abstract superclass for all pull parser events.  In order to avoid
  26.     some typecasts, this class already provides most of the content
  27.     access methods filled in the specialized subclasses.  */
  28.  
  29. public class ParseEvent {
  30.     static final String WRONG_TYPE = 
  31. "Method not supported for the given event type!";
  32.     int lineNumber = -1;
  33.     int type;
  34.     String text;
  35.     public ParseEvent (int type, String text) {
  36. this.type = type;
  37. this.text = text;
  38.     }
  39.  
  40.     /** returns the line number of the event */
  41.     public int getLineNumber () {
  42. return lineNumber;
  43.     }
  44.     /** returns the event type integer constant assigned to this
  45.         event.  Possible event types are Xml.START_TAG, Xml.END_TAG,
  46.         Xml.TEXT, Xml.PROCESSING_INSTRUCTION, Xml.COMMENT,
  47.         Xml.DOCTYPE, and Xml.END_DOCUMENT */
  48.     public int getType () {
  49. return type;
  50.     }
  51.     
  52.     /** sets the line number of the event. Used by the parser only. */
  53.     public void setLineNumber (int lineNumber) {
  54. this.lineNumber = lineNumber;
  55.     }
  56.    /** In the event type is START_TAG, this method returns the attribute 
  57.        at the given index position. For all other event
  58.        types, or if the index is out of range, an exception is thrown. */
  59.     public Attribute getAttribute (int index) {
  60. return (Attribute) getAttributes().elementAt (index);
  61.     }
  62.     
  63.     /** returns the local attribute with the given name.  convenience
  64. method for getAttribute (Xml.NO_NAMESPACE, name); */
  65.     public Attribute getAttribute (String name) {
  66. return getAttribute (Xml.NO_NAMESPACE, name);
  67.     }
  68.     /** returns the local attribute with the given qualified name.
  69.         Please use null as placeholder for any namespace or
  70.         Xml.NO_NAMESPACE for no namespace. */
  71.     public Attribute getAttribute (String namespace, String name) {
  72. Vector attributes = getAttributes ();
  73. int len = getAttributeCount ();
  74. for (int i = 0; i < len; i++) {
  75.     Attribute attr = (Attribute) attributes.elementAt (i);
  76.     
  77.     if (attr.getName ().equals (name) 
  78. && (namespace == null || namespace.equals (attr.getNamespace ())))
  79. return attr;  
  80. }
  81. return null;
  82.     }
  83.     /** If the event type is START_TAG, the number of attributes is
  84. returned. For all other event types, an exception is thrown. */
  85.     public int getAttributeCount () {
  86. Vector a = getAttributes ();
  87. return a == null ? 0 : a.size ();
  88.     }
  89.     /** If the event type is START_TAG, the attribute Vector (null if
  90. no attributes) is returned. For all other event types, an
  91. exception is thrown. */
  92.     public Vector getAttributes () {
  93. throw new RuntimeException (WRONG_TYPE);
  94.     }
  95.     /** returns the (local) name of the element started if
  96.         instance of StartTag, null otherwise. */
  97.     public String getName () {
  98. return null;
  99.     }
  100.     /** returns namespace if instance of StartTag, null
  101.         otherwise. */ 
  102.     public String getNamespace () {
  103. return null;
  104.     }
  105.     /** Returns the value of the attribute with the given name.
  106. Throws an exception if not instanceof StartTag or if not
  107. existing. In order to get a null value for not existing
  108. attributes, please call getValueDefault (attrName, null)
  109. instead. */
  110.     public String getValue (String attrName) {
  111. Attribute attr = getAttribute (attrName);
  112. if (attr == null) throw new RuntimeException 
  113.     ("Attribute "+ attrName + " in " + this + " expected!");
  114. return attr.getValue ();
  115.     }
  116.     /** Returns the given attribute value, or the given default value
  117. if the attribute is not existing. */
  118.     public String getValueDefault (String attrName, String deflt) {
  119. Attribute attr = getAttribute (attrName);
  120. return attr == null ? deflt : attr.getValue ();
  121.     }
  122.  
  123.     /** If the event type is TEXT, PROCESSING_INSTRUCTION,
  124. or DOCTYPE, the corresponding string is returned. For
  125. all othe event types, null is returned. */
  126.     public String getText () {
  127. return text;
  128.     }
  129.     public String toString () {
  130. return "ParseEvent type="+type+ " text='"+text+"'";
  131.     }
  132. }