模块 java.xml

类 StreamReaderDelegate

java.lang.Object
javax.xml.stream.util.StreamReaderDelegate
所有已实现的接口:
XMLStreamConstants , XMLStreamReader

public class StreamReaderDelegate extends Object implements XMLStreamReader
这是派生 XMLStreamReader 过滤器的基类。此类旨在位于 XMLStreamReader 和应用程序的 XMLStreamReader 之间。默认情况下,每个方法只调用父接口上的相应方法。
自从:
1.6
参见:
  • 构造方法详细信息

    • StreamReaderDelegate

      public StreamReaderDelegate()
      构造一个没有父级的空过滤器。
    • StreamReaderDelegate

      public StreamReaderDelegate(XMLStreamReader  reader)
      构造具有指定父级的过滤器。
      参数:
      reader - 父母
  • 方法详情

    • setParent

      public void setParent(XMLStreamReader  reader)
      设置此实例的父级。
      参数:
      reader - 新父母
    • getParent

      public XMLStreamReader  getParent()
      获取此实例的父级。
      返回:
      父级或 null(如果未设置)
    • next

      public int next() throws XMLStreamException
      从接口 XMLStreamReader 复制的描述
      获取下一个解析事件 - 处理器可能会在一个块中返回所有连续的字符数据,或者它可能会将其分成几个块。如果属性 javax.xml.stream.isCoalescing 设置为 true,则必须合并元素内容,并且必须只为连续的元素内容或 CDATA 部分返回一个 CHARACTERS 事件。默认情况下,实体引用必须展开并透明地报告给应用程序。如果无法扩展实体引用,将抛出异常。如果元素内容为空(即内容为“”),则不会报告任何 CHARACTERS 事件。

      给定以下 XML:
      <foo><!--description-->content text<![CDATA[<greeting>Hello>/greeting>]]>other content>/foo>
      在 foo 上调用 next() 的行为是:
      1-评论(COMMENT)
      2-然后是字符部分(CHARACTERS)
      3- 然后是 CDATA 部分(另一个字符)
      4- 然后是下一个字符部分(另一个字符)
      5- 然后是 END_ELEMENT

      NOTE:空元素(例如 <tag/> )将通过两个单独的事件进行报告:START_ELEMENT、END_ELEMENT - 这将空元素的解析等效性保留为 <tag></tag>

      指定者:
      next 在接口 XMLStreamReader
      返回:
      当前解析事件对应的整数代码
      抛出:
      XMLStreamException - 如果处理底层 XML 源时出错
      参见:
    • nextTag

      public int nextTag() throws XMLStreamException
      从接口 XMLStreamReader 复制的描述
      跳过任何空格(isWhiteSpace() 返回 true)、COMMENT 或 PROCESSING_INSTRUCTION,直到到达 START_ELEMENT 或 END_ELEMENT。如果遇到非空白字符、COMMENT、PROCESSING_INSTRUCTION、START_ELEMENT、END_ELEMENT,则会抛出异常。在处理由空格分隔的纯元素内容时应使用此方法。
      前置条件:无
      后置条件:当前事件是 START_ELEMENT 或 END_ELEMENT,并且光标可能已经移到任何空白事件上。
      本质上它执行以下操作(实现可以自由优化,但必须进行等效处理):
       
       int eventType = next();
       while((eventType == XMLStreamConstants.CHARACTERS && isWhiteSpace()) // skip whitespace
       || (eventType == XMLStreamConstants.CDATA && isWhiteSpace())
       // skip whitespace
       || eventType == XMLStreamConstants.SPACE
       || eventType == XMLStreamConstants.PROCESSING_INSTRUCTION
       || eventType == XMLStreamConstants.COMMENT
       ) {
         eventType = next();
       }
       if (eventType != XMLStreamConstants.START_ELEMENT && eventType != XMLStreamConstants.END_ELEMENT) {
         throw new String XMLStreamException("expected start or end tag", getLocation());
       }
       return eventType;  
       
      指定者:
      nextTag 在接口 XMLStreamReader
      返回:
      元素读取的事件类型(START_ELEMENT 或 END_ELEMENT)
      抛出:
      XMLStreamException - 如果当前事件不是空格、PROCESSING_INSTRUCTION、START_ELEMENT 或 END_ELEMENT
    • getElementText

      public String  getElementText() throws XMLStreamException
      从接口 XMLStreamReader 复制的描述
      读取纯文本元素的内容,如果这不是纯文本元素,则抛出异常。无论 javax.xml.stream.isCoalescing 的值如何,此方法始终返回合并的内容。
      前提条件:当前事件为START_ELEMENT。
      后置条件:当前事件是对应的END_ELEMENT。
      该方法执行以下操作(实现可以自由优化,但必须进行等效处理):
       if(getEventType() != XMLStreamConstants.START_ELEMENT) {
         throw new XMLStreamException(
         "parser must be on START_ELEMENT to read next text", getLocation());
       }
      
       int eventType = next();
       StringBuffer content = new StringBuffer();
       while(eventType != XMLStreamConstants.END_ELEMENT) {
         if(eventType == XMLStreamConstants.CHARACTERS
          || eventType == XMLStreamConstants.CDATA
          || eventType == XMLStreamConstants.SPACE
          || eventType == XMLStreamConstants.ENTITY_REFERENCE) {
            buf.append(getText());
         } else if(eventType == XMLStreamConstants.PROCESSING_INSTRUCTION
              || eventType == XMLStreamConstants.COMMENT) {
           // skipping
         } else if(eventType == XMLStreamConstants.END_DOCUMENT) {
           throw new XMLStreamException(
           "unexpected end of document when reading element text content", this);
         } else if(eventType == XMLStreamConstants.START_ELEMENT) {
           throw new XMLStreamException(
           "element text content may not contain START_ELEMENT", getLocation());
         } else {
           throw new XMLStreamException(
           "Unexpected event type "+eventType, getLocation());
         }
         eventType = next();
       }
       return buf.toString();
       
      指定者:
      getElementText 在接口 XMLStreamReader
      返回:
      纯文本元素的内容
      抛出:
      XMLStreamException - 如果当前事件不是 START_ELEMENT 或遇到非文本元素
    • require

      public void require(int type, String  namespaceURI, String  localName) throws XMLStreamException
      从接口 XMLStreamReader 复制的描述
      测试当前事件是否属于给定类型,以及命名空间和名称是否与当前事件的当前命名空间和名称相匹配。如果 namespaceURI 为 null,则不检查是否相等;如果 localName 为 null,则不检查是否相等。
      指定者:
      require 在接口 XMLStreamReader
      参数:
      type - 事件类型
      namespaceURI - 事件的 uri,可能为 null
      localName - 事件的本地名称,可以为 null
      抛出:
      XMLStreamException - 如果所需值不匹配。
    • hasNext

      public boolean hasNext() throws XMLStreamException
      从接口 XMLStreamReader 复制的描述
      如果有更多解析事件则返回 true,如果没有更多事件则返回 false。如果 XMLStreamReader 的当前状态为 END_DOCUMENT,则此方法将返回 false
      指定者:
      hasNext 在接口 XMLStreamReader
      返回:
      如果有更多事件,则为 true,否则为 false
      抛出:
      XMLStreamException - 如果存在检测下一个状态的致命错误
    • close

      public void close() throws XMLStreamException
      从接口 XMLStreamReader 复制的描述
      释放与此 Reader 关联的任何资源。此方法不会关闭基础输入源。
      指定者:
      close 在接口 XMLStreamReader
      抛出:
      XMLStreamException - 如果释放关联资源时出错
    • getNamespaceURI

      public String  getNamespaceURI(String  prefix)
      从接口 XMLStreamReader 复制的描述
      返回给定前缀的 uri。返回的 uri 取决于处理器的当前状态。

      NOTE: 'xml' 前缀按照 XML 中的命名空间 规范中的定义绑定到“http://www.w3.org/XML/1998/namespace”。

      NOTE: 'xmlns' 前缀必须解析为以下命名空间 http://www.w3.org/2000/xmlns/

      指定者:
      getNamespaceURI 在接口 XMLStreamReader
      参数:
      prefix - 查找的前缀,不能为空
      返回:
      绑定到给定前缀的 uri,如果未绑定则为 null
    • getNamespaceContext

      public NamespaceContext  getNamespaceContext()
      从接口 XMLStreamReader 复制的描述
      返回当前位置的只读命名空间上下文。上下文是暂时的,只有在调用 next() 更改读取器的状态之前才有效。
      指定者:
      getNamespaceContext 在接口 XMLStreamReader
      返回:
      返回命名空间上下文
    • isStartElement

      public boolean isStartElement()
      从接口 XMLStreamReader 复制的描述
      如果光标指向开始标记则返回 true(否则返回 false)
      指定者:
      isStartElement 在接口 XMLStreamReader
      返回:
      如果光标指向开始标记,则为 true,否则为 false
    • isEndElement

      public boolean isEndElement()
      从接口 XMLStreamReader 复制的描述
      如果光标指向结束标记则返回 true(否则返回 false)
      指定者:
      isEndElement 在接口 XMLStreamReader
      返回:
      如果光标指向结束标记,则为 true,否则为 false
    • isCharacters

      public boolean isCharacters()
      从接口 XMLStreamReader 复制的描述
      如果光标指向字符数据事件则返回真
      指定者:
      isCharacters 在接口 XMLStreamReader
      返回:
      如果光标指向字符数据,则为 true,否则为 false
    • isWhiteSpace

      public boolean isWhiteSpace()
      从接口 XMLStreamReader 复制的描述
      如果光标指向由所有空格组成的字符数据事件,则返回 true
      指定者:
      isWhiteSpace 在接口 XMLStreamReader
      返回:
      如果光标指向所有空白,则为 true,否则为 false
    • getAttributeValue

      public String  getAttributeValue(String  namespaceUri, String  localName)
      从接口 XMLStreamReader 复制的描述
      返回具有命名空间和本地名称的属性的规范化属性值如果命名空间 URI 为空,则不检查命名空间是否相等
      指定者:
      getAttributeValue 在接口 XMLStreamReader
      参数:
      namespaceUri - 属性的命名空间
      localName - 属性的本地名称,不能为空
      返回:
      返回属性的值,如果找不到则返回 null
    • getAttributeCount

      public int getAttributeCount()
      从接口 XMLStreamReader 复制的描述
      返回此 START_ELEMENT 上的属性计数,此方法仅对 START_ELEMENT 或 ATTRIBUTE 有效。此计数不包括命名空间定义。属性索引是从零开始的。
      指定者:
      getAttributeCount 在接口 XMLStreamReader
      返回:
      返回属性的数量
    • getAttributeName

      public QName  getAttributeName(int index)
      从接口 XMLStreamReader 复制的描述
      返回所提供索引处的属性的 qname
      指定者:
      getAttributeName 在接口 XMLStreamReader
      参数:
      index - 属性的位置
      返回:
      属性的 QName
    • getAttributePrefix

      public String  getAttributePrefix(int index)
      从接口 XMLStreamReader 复制的描述
      在提供的索引处返回此属性的前缀
      指定者:
      getAttributePrefix 在接口 XMLStreamReader
      参数:
      index - 属性的位置
      返回:
      属性的前缀
    • getAttributeNamespace

      public String  getAttributeNamespace(int index)
      从接口 XMLStreamReader 复制的描述
      返回所提供索引处的属性的命名空间
      指定者:
      getAttributeNamespace 在接口 XMLStreamReader
      参数:
      index - 属性的位置
      返回:
      名称空间 URI(可以为空)
    • getAttributeLocalName

      public String  getAttributeLocalName(int index)
      从接口 XMLStreamReader 复制的描述
      返回所提供索引处属性的本地名称
      指定者:
      getAttributeLocalName 在接口 XMLStreamReader
      参数:
      index - 属性的位置
      返回:
      属性的本地名称
    • getAttributeType

      public String  getAttributeType(int index)
      从接口 XMLStreamReader 复制的描述
      返回所提供索引处属性的 XML 类型
      指定者:
      getAttributeType 在接口 XMLStreamReader
      参数:
      index - 属性的位置
      返回:
      属性的 XML 类型
    • getAttributeValue

      public String  getAttributeValue(int index)
      从接口 XMLStreamReader 复制的描述
      返回索引处的属性值
      指定者:
      getAttributeValue 在接口 XMLStreamReader
      参数:
      index - 属性的位置
      返回:
      属性值
    • isAttributeSpecified

      public boolean isAttributeSpecified(int index)
      从接口 XMLStreamReader 复制的描述
      返回一个boolean,指示是否默认创建此属性
      指定者:
      isAttributeSpecified 在接口 XMLStreamReader
      参数:
      index - 属性的位置
      返回:
      如果这是默认属性,则为真
    • getNamespaceCount

      public int getNamespaceCount()
      从接口 XMLStreamReader 复制的描述
      返回在此 START_ELEMENT 或 END_ELEMENT 上声明的命名空间的计数,此方法仅对 START_ELEMENT、END_ELEMENT 或 NAMESPACE 有效。在 END_ELEMENT 上,计数是即将超出范围的名称空间。这相当于 SAX 回调为结束元素事件报告的信息。
      指定者:
      getNamespaceCount 在接口 XMLStreamReader
      返回:
      返回此特定元素上的命名空间声明数
    • getNamespacePrefix

      public String  getNamespacePrefix(int index)
      从接口 XMLStreamReader 复制的描述
      返回在索引处声明的命名空间的前缀。如果这是默认命名空间声明,则返回 null
      指定者:
      getNamespacePrefix 在接口 XMLStreamReader
      参数:
      index - 命名空间声明的位置
      返回:
      返回名称空间前缀
    • getNamespaceURI

      public String  getNamespaceURI(int index)
      从接口 XMLStreamReader 复制的描述
      返回在索引处声明的命名空间的 uri。
      指定者:
      getNamespaceURI 在接口 XMLStreamReader
      参数:
      index - 命名空间声明的位置
      返回:
      返回命名空间 uri
    • getEventType

      public int getEventType()
      从接口 XMLStreamReader 复制的描述
      返回一个整数代码,指示光标指向的事件类型。初始事件类型是 XMLStreamConstants.START_DOCUMENT
      指定者:
      getEventType 在接口 XMLStreamReader
      返回:
      当前事件的类型
    • getText

      public String  getText()
      从接口 XMLStreamReader 复制的描述
      将解析事件的当前值作为字符串返回,这将返回 CHARACTERS 事件的字符串值,返回 COMMENT 的值,ENTITY_REFERENCE 的替换值,CDATA 部分的字符串值,SPACE 的字符串值事件,或 DTD 内部子集的字符串值。如果已解析 ENTITY_REFERENCE,则任何字符数据都将报告为 CHARACTERS 事件。
      指定者:
      getText 在接口 XMLStreamReader
      返回:
      当前文本或 null
    • getTextCharacters

      public int getTextCharacters(int sourceStart, char[] target, int targetStart, int length) throws XMLStreamException
      从接口 XMLStreamReader 复制的描述
      获取与 CHARACTERS、SPACE 或 CDATA 事件关联的文本。以“sourceStart”开头的文本被复制到从“targetStart”开始的“target”中。最多复制“长度”个字符。返回实际复制的字符数。 “sourceStart”参数必须大于或等于 0 且小于或等于与事件关联的字符数。通常,请求文本从“sourceStart”0 开始。如果实际复制的字符数小于“length”,则没有更多文本。否则,需要进行后续调用,直到检索到所有文本。例如:
      
       int length = 1024;
       char[] myBuffer = new char[ length ];
      
       for ( int sourceStart = 0 ; ; sourceStart += length )
       {
        int nCopied = stream.getTextCharacters( sourceStart, myBuffer, 0, length );
      
        if (nCopied < length)
          break;
       }
        
      如果底层源中存在任何 XML 错误,则可能会抛出 XMLStreamException。 “targetStart”参数必须大于或等于 0 且小于“target”的长度,Length 必须大于 0 且“targetStart + length”必须小于或等于“target”的长度。
      指定者:
      getTextCharacters 在接口 XMLStreamReader
      参数:
      sourceStart - 要复制的源数组中第一个字符的索引
      target - 目标数组
      targetStart - 目标数组中的起始偏移量
      length - 要复制的字符数
      返回:
      实际复制的字符数
      抛出:
      XMLStreamException - 如果底层 XML 源格式不正确
    • getTextCharacters

      public char[] getTextCharacters()
      从接口 XMLStreamReader 复制的描述
      返回一个数组,其中包含来自此事件的字符。该数组应被视为只读和瞬时的。即数组将包含文本字符,直到 XMLStreamReader 移动到下一个事件。尝试在该时间之后保留字符数组或修改数组的内容都违反了此接口的约定。
      指定者:
      getTextCharacters 在接口 XMLStreamReader
      返回:
      当前文本或空数组
    • getTextStart

      public int getTextStart()
      从接口 XMLStreamReader 复制的描述
      返回存储(此文本事件的)第一个字符的文本字符数组的偏移量。
      指定者:
      getTextStart 在接口 XMLStreamReader
      返回:
      字符数组中文本的起始位置
    • getTextLength

      public int getTextLength()
      从接口 XMLStreamReader 复制的描述
      返回文本字符数组中此 Text 事件的字符序列的长度。
      指定者:
      getTextLength 在接口 XMLStreamReader
      返回:
      文字的长度
    • getEncoding

      public String  getEncoding()
      从接口 XMLStreamReader 复制的描述
      如果已知则返回输入编码,如果未知则返回 null。
      指定者:
      getEncoding 在接口 XMLStreamReader
      返回:
      此实例的编码或 null
    • hasText

      public boolean hasText()
      从接口 XMLStreamReader 复制的描述
      返回一个boolean,指示当前事件是否有文本。以下事件具有文本:CHARACTERS、DTD、ENTITY_REFERENCE、COMMENT、SPACE
      指定者:
      hasText 在接口 XMLStreamReader
      返回:
      如果事件有文本,则为 true,否则为 false
    • getLocation

      public Location  getLocation()
      从接口 XMLStreamReader 复制的描述
      返回处理器的当前位置。如果 Location 未知,则处理器应返回 Location 的实现,该实现为位置返回 -1,为 publicId 和 systemId 返回 null。位置信息仅在调用 next() 之前有效。
      指定者:
      getLocation 在接口 XMLStreamReader
      返回:
      光标的位置
    • getName

      public QName  getName()
      从接口 XMLStreamReader 复制的描述
      返回当前 START_ELEMENT 或 END_ELEMENT 事件的 QName
      指定者:
      getName 在接口 XMLStreamReader
      返回:
      当前 START_ELEMENT 或 END_ELEMENT 事件的 QName
    • getLocalName

      public String  getLocalName()
      从接口 XMLStreamReader 复制的描述
      返回当前事件的(本地)名称。对于 START_ELEMENT 或 END_ELEMENT,返回当前元素的(本地)名称。对于 ENTITY_REFERENCE,它返回实体名称。当前事件必须是 START_ELEMENT 或 END_ELEMENT,或 ENTITY_REFERENCE
      指定者:
      getLocalName 在接口 XMLStreamReader
      返回:
      本地名称
    • hasName

      public boolean hasName()
      从接口 XMLStreamReader 复制的描述
      返回一个boolean,指示当前事件是否有名称(是 START_ELEMENT 或 END_ELEMENT)。
      指定者:
      hasName 在接口 XMLStreamReader
      返回:
      如果事件有名称,则为 true,否则为 false
    • getNamespaceURI

      public String  getNamespaceURI()
      从接口 XMLStreamReader 复制的描述
      如果当前事件是 START_ELEMENT 或 END_ELEMENT,则此方法返回前缀的 URI 或默认命名空间。如果事件没有前缀,则返回 null。
      指定者:
      getNamespaceURI 在接口 XMLStreamReader
      返回:
      绑定到此元素前缀的 URI、默认名称空间或 null
    • getPrefix

      public String  getPrefix()
      从接口 XMLStreamReader 复制的描述
      返回当前事件的前缀,如果事件没有前缀则返回 null
      指定者:
      getPrefix 在接口 XMLStreamReader
      返回:
      前缀或空
    • getVersion

      public String  getVersion()
      从接口 XMLStreamReader 复制的描述
      获取在 xml 声明中声明的 xml 版本 如果未声明则返回 null
      指定者:
      getVersion 在接口 XMLStreamReader
      返回:
      XML 版本或 null
    • isStandalone

      public boolean isStandalone()
      从接口 XMLStreamReader 复制的描述
      从 xml 声明中获取独立声明
      指定者:
      isStandalone 在接口 XMLStreamReader
      返回:
      如果这是独立的,则为 true,否则为 false
    • standaloneSet

      public boolean standaloneSet()
      从接口 XMLStreamReader 复制的描述
      检查文档中是否设置了独立
      指定者:
      standaloneSet 在接口 XMLStreamReader
      返回:
      如果在文档中设置了独立,则为 true,否则为 false
    • getCharacterEncodingScheme

      public String  getCharacterEncodingScheme()
      从接口 XMLStreamReader 复制的描述
      返回在 xml 声明中声明的字符编码如果没有声明则返回 null
      指定者:
      getCharacterEncodingScheme 在接口 XMLStreamReader
      返回:
      文档中声明的编码或 null
    • getPITarget

      public String  getPITarget()
      从接口 XMLStreamReader 复制的描述
      获取处理指令的目标
      指定者:
      getPITarget 在接口 XMLStreamReader
      返回:
      目标或空
    • getPIData

      public String  getPIData()
      从接口 XMLStreamReader 复制的描述
      获取处理指令的数据部分
      指定者:
      getPIData 在接口 XMLStreamReader
      返回:
      数据或空
    • getProperty

      public Object  getProperty(String  name)
      从接口 XMLStreamReader 复制的描述
      从底层实现中获取功能/属性的值
      指定者:
      getProperty 在接口 XMLStreamReader
      参数:
      name - 属性的名称,不能为空
      返回:
      财产的值