javax.xml.stream.util

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

public class StreamReaderDelegate
     
extends Object
implements XMLStreamReader

该类是用于派生 XMLStreamReader 过滤器的基类。 此类设计用于 XMLStreamReader 和应用程序的 XMLStreamReader 之间。默认情况下,每种方法除了调用父接口中的相应方法之外,不执行任何操作。

从以下版本开始:
1.6
另请参见:
XMLStreamReader, EventReaderDelegate

字段摘要
 
从接口 javax.xml.stream.XMLStreamConstants 继承的字段
ATTRIBUTE, CDATA, CHARACTERS, COMMENT, DTD, END_DOCUMENT, END_ELEMENT, ENTITY_DECLARATION, ENTITY_REFERENCE, NAMESPACE, NOTATION_DECLARATION, PROCESSING_INSTRUCTION, SPACE, START_DOCUMENT, START_ELEMENT
 
构造方法摘要
StreamReaderDelegate()
          构造没有父过滤器的空过滤器。
StreamReaderDelegate(XMLStreamReader reader)
          用指定的父过滤器来构造一个过滤器。
 
方法摘要
 void close()
          释放与此 Reader 关联的所有资源。
 int getAttributeCount()
          返回此 START_ELEMENT 中的属性计数,此方法仅对 START_ELEMENT 或 ATTRIBUTE 有效。
 String getAttributeLocalName(int index)
          返回所提供索引处的属性的 localName
 QName getAttributeName(int index)
          返回所提供索引处的属性的 qname
 String getAttributeNamespace(int index)
          返回所提供索引处的属性的名称空间
 String getAttributePrefix(int index)
          返回所提供索引处的属性的前缀
 String getAttributeType(int index)
          返回所提供索引处的属性的 XML 类型
 String getAttributeValue(int index)
          返回 index 处的属性值
 String getAttributeValue(String namespaceUri, String localName)
          返回带有名称空间和 localName 的属性的规范化属性值。
 String getCharacterEncodingScheme()
          返回 xml 声明中声明的字符编码。
 String getElementText()
          读取纯文本元素的内容,如果不是纯文本元素,则抛出异常。
 String getEncoding()
          如果输入编码已知,则返回输入编码;如果未知,则返回 null。
 int getEventType()
          返回一个整数码,指示光标所指向的事件的类型。
 String getLocalName()
          返回当前事件的(本地)名称。
 Location getLocation()
          返回处理器的当前位置。
 QName getName()
          返回当前 START_ELEMENT 或 END_ELEMENT 事件的 QName
 NamespaceContext getNamespaceContext()
          返回当前位置的只读名称空间上下文。
 int getNamespaceCount()
          返回在 START_ELEMENT 或 END_ELEMENT 中声明的名称空间的计数,此方法仅对 START_ELEMENT、END_ELEMENT 或 NAMESPACE 有效。
 String getNamespacePrefix(int index)
          返回在 index 处声明的名称空间前缀。
 String getNamespaceURI()
          如果当前事件是 START_ELEMENT 或 END_ELEMENT,则此方法返回前缀的 URI 或默认名称空间。
 String getNamespaceURI(int index)
          返回在 index 处声明的名称空间 URI。
 String getNamespaceURI(String prefix)
          返回给定前缀的 URI。
 XMLStreamReader getParent()
          获取此实例的父实例。
 String getPIData()
          获取处理指令的数据节
 String getPITarget()
          获取处理指令的目标
 String getPrefix()
          返回当前事件的前缀,如果事件没有前缀,则返回 null
 Object getProperty(String name)
          从底层实现获取功能/属性的值
 String getText()
          以字符串的形式返回解析事件的当前值,此方法返回 CHARACTERS 事件的字符串值,返回 COMMENT 的值、ENTITY_REFERENCE 的替代值、CDATA 节的字符串值、SPACE 事件的字符串值、DTD 内部子集的字符串值。
 char[] getTextCharacters()
          返回一个包含此事件中字符的数组。
 int getTextCharacters(int sourceStart, char[] target, int targetStart, int length)
          获取与 CHARACTERS、SPACE 或 CDATA 事件关联的文本。
 int getTextLength()
          返回文本字符数组中此文本事件的字符序列长度。
 int getTextStart()
          返回存储(此文本事件的)第一个字符位置处的文本字符数组的偏移量。
 String getVersion()
          获取在 xml 声明中声明的 xml 版本,如果没有声明版本,则返回 null
 boolean hasName()
          如果当前事件有名称(是 START_ELEMENT 或 END_ELEMENT),则返回 ture,否则返回 false
 boolean hasNext()
          如果有多个解析事件,则返回 true,如果不再有事件,则返回 false。
 boolean hasText()
          如果当前事件具有文本,则返回 true,否则返回 false。
 boolean isAttributeSpecified(int index)
          返回一个 boolean 值,它指示此属性是否为默认创建的
 boolean isCharacters()
          如果光标指向字符数据事件,则返回 true
 boolean isEndElement()
          如果光标指向结束标记,则返回 true(否则返回 false)
 boolean isStandalone()
          获取 xml 声明中的独立声明
 boolean isStartElement()
          如果光标指向开始标记,则返回 true(否则返回 false)
 boolean isWhiteSpace()
          如果光标指向由所有空格组成的字符数据事件,则返回 true
 int next()
          获取下一个解析事件??处理器可以用单个存储块返回所有连续的字符数据,它也可以将其分割成几个存储块。
 int nextTag()
          在到达 START_ELEMENT 或 END_ELEMENT 之前,跳过所有空格(isWhiteSpace() 返回 true)、COMMENT 或 PROCESSING_INSTRUCTION。
 void require(int type, String namespaceURI, String localName)
          测试当前事件是否属于给定的类型,以及名称空间和名称是否与当前事件的当前名称空间和名称相匹配。
 void setParent(XMLStreamReader reader)
          设置此实例的父实例。
 boolean standaloneSet()
          检查文档中是否设置了独立
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

构造方法详细信息

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-->内容文本<![CDATA[<greeting>Hello</greeting>]]>其他内容</foo>
对 foo 调用 next() 的行为将是:
1- 注释 (COMMENT)
2- 然后是字符节 (CHARACTERS)
3- 接下来是 CDATA 节(另一个 CHARACTERS)
4- 再接下来是下一个字符节 (另一个 CHARACTERS)
5- 最后是 END_ELEMENT

注: 空元素(如 <tag/>)将用以下两个单独的事件报告:START_ELEMENT 和 END_ELEMENT??这保证了空元素对 <tag></tag> 解析的等效性。 如果是在 hasNext() 返回 false 之后调用此方法,则此方法将抛出 IllegalStateException。

指定者:
接口 XMLStreamReader 中的 next
返回:
与当前解析事件相对应的整数码
抛出:
XMLStreamException - 如果处理底层 XML 源时发生错误
另请参见:
XMLEvent

nextTag

public int nextTag()
            throws XMLStreamException
从接口 XMLStreamReader 复制的描述
在到达 START_ELEMENT 或 END_ELEMENT 之前,跳过所有空格(isWhiteSpace() 返回 true)、COMMENT 或 PROCESSING_INSTRUCTION。如果遇到空格字符、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;
 

指定者:
接口 XMLStreamReader 中的 nextTag
返回:
元素读取的事件类型(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();
 

指定者:
接口 XMLStreamReader 中的 getElementText
抛出:
XMLStreamException - 如果当前事件不是 START_ELEMENT 或者遇到了非文本元素

require

public void require(int type,
                    String namespaceURI,
                    String localName)
             throws XMLStreamException
从接口 XMLStreamReader 复制的描述
测试当前事件是否属于给定的类型,以及名称空间和名称是否与当前事件的当前名称空间和名称相匹配。如果 namespaceURI 为 null,则该参数不进行相等性检查;如果 localName 为 null,则该参数不进行相等性检查。

指定者:
接口 XMLStreamReader 中的 require
参数:
type - 事件类型
namespaceURI - 事件的 URI,可以为 null
localName - 事件的 localName,可以为 null
抛出:
XMLStreamException - 如果所需值不匹配。

hasNext

public boolean hasNext()
                throws XMLStreamException
从接口 XMLStreamReader 复制的描述
如果有多个解析事件,则返回 true,如果不再有事件,则返回 false。如果 XMLStreamReader 的当前状态为 END_DOCUMENT,则此方法返回 false

指定者:
接口 XMLStreamReader 中的 hasNext
返回:
如果有多个事件,则返回 true,否则返回 false
抛出:
XMLStreamException - 如果检测下一个状态时发生严重错误

close

public void close()
           throws XMLStreamException
从接口 XMLStreamReader 复制的描述
释放与此 Reader 关联的所有资源。此方法不会关闭底层输入源。

指定者:
接口 XMLStreamReader 中的 close
抛出:
XMLStreamException - 如果释放关联资源时发生错误

getNamespaceURI

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

注:根据 Namespaces in XML 规范中的定义,'xml' 前缀被绑定到 "http://www.w3.org/XML/1998/namespace"。

注:'xmlns' 前缀必须被解析到以下名称空间:http://www.w3.org/2000/xmlns/

指定者:
接口 XMLStreamReader 中的 getNamespaceURI
参数:
prefix - 要查找的前缀,不可以为 null
返回:
绑定到给定前缀的 URI,如果未绑定,则返回 null

getNamespaceContext

public NamespaceContext getNamespaceContext()
从接口 XMLStreamReader 复制的描述
返回当前位置的只读名称空间上下文。上下文为 transient,只在调用 next() 更改 reader 的状态之前才有效。

指定者:
接口 XMLStreamReader 中的 getNamespaceContext
返回:
返回名称空间上下文

isStartElement

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

指定者:
接口 XMLStreamReader 中的 isStartElement
返回:
如果光标指向开始标记,则返回 true,否则返回 false

isEndElement

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

指定者:
接口 XMLStreamReader 中的 isEndElement
返回:
如果光标指向结束标记,则返回 true,否则返回 false

isCharacters

public boolean isCharacters()
从接口 XMLStreamReader 复制的描述
如果光标指向字符数据事件,则返回 true

指定者:
接口 XMLStreamReader 中的 isCharacters
返回:
如果光标指向字符数据,则返回 true,否则返回 false

isWhiteSpace

public boolean isWhiteSpace()
从接口 XMLStreamReader 复制的描述
如果光标指向由所有空格组成的字符数据事件,则返回 true

指定者:
接口 XMLStreamReader 中的 isWhiteSpace
返回:
如果光标指向所有空格,则返回 true,否则返回 false

getAttributeValue

public String getAttributeValue(String namespaceUri,
                                String localName)
从接口 XMLStreamReader 复制的描述
返回带有名称空间和 localName 的属性的规范化属性值。如果 namespaceURI 为 null,则名称空间不进行相等性检查

指定者:
接口 XMLStreamReader 中的 getAttributeValue
参数:
namespaceUri - 属性的名称空间
localName - 属性的本地名称,不可以为 null
返回:
返回属性的值,如果未找到,则返回 null

getAttributeCount

public int getAttributeCount()
从接口 XMLStreamReader 复制的描述
返回此 START_ELEMENT 中的属性计数,此方法仅对 START_ELEMENT 或 ATTRIBUTE 有效。此计数不包括名称空间定义。属性索引从零开始。

指定者:
接口 XMLStreamReader 中的 getAttributeCount
返回:
返回属性数

getAttributeName

public QName getAttributeName(int index)
从接口 XMLStreamReader 复制的描述
返回所提供索引处的属性的 qname

指定者:
接口 XMLStreamReader 中的 getAttributeName
参数:
index - 属性的位置
返回:
属性的 QName

getAttributePrefix

public String getAttributePrefix(int index)
从接口 XMLStreamReader 复制的描述
返回所提供索引处的属性的前缀

指定者:
接口 XMLStreamReader 中的 getAttributePrefix
参数:
index - 属性的位置
返回:
属性的前缀

getAttributeNamespace

public String getAttributeNamespace(int index)
从接口 XMLStreamReader 复制的描述
返回所提供索引处的属性的名称空间

指定者:
接口 XMLStreamReader 中的 getAttributeNamespace
参数:
index - 属性的位置
返回:
名称空间 URI(可以为 null)

getAttributeLocalName

public String getAttributeLocalName(int index)
从接口 XMLStreamReader 复制的描述
返回所提供索引处的属性的 localName

指定者:
接口 XMLStreamReader 中的 getAttributeLocalName
参数:
index - 属性的位置
返回:
属性的 localName

getAttributeType

public String getAttributeType(int index)
从接口 XMLStreamReader 复制的描述
返回所提供索引处的属性的 XML 类型

指定者:
接口 XMLStreamReader 中的 getAttributeType
参数:
index - 属性的位置
返回:
属性的 XML 类型

getAttributeValue

public String getAttributeValue(int index)
从接口 XMLStreamReader 复制的描述
返回 index 处的属性值

指定者:
接口 XMLStreamReader 中的 getAttributeValue
参数:
index - 属性的位置
返回:
属性值

isAttributeSpecified

public boolean isAttributeSpecified(int index)
从接口 XMLStreamReader 复制的描述
返回一个 boolean 值,它指示此属性是否为默认创建的

指定者:
接口 XMLStreamReader 中的 isAttributeSpecified
参数:
index - 属性的位置
返回:
如果这是一个默认属性,则返回 true

getNamespaceCount

public int getNamespaceCount()
从接口 XMLStreamReader 复制的描述
返回在 START_ELEMENT 或 END_ELEMENT 中声明的名称空间的计数,此方法仅对 START_ELEMENT、END_ELEMENT 或 NAMESPACE 有效。对于 END_ELEMENT,计数是最大的名称空间范围。它等同于 SAX 回调所报告的有关结束元素事件的信息。

指定者:
接口 XMLStreamReader 中的 getNamespaceCount
返回:
返回此特定元素中的名称空间声明数

getNamespacePrefix

public String getNamespacePrefix(int index)
从接口 XMLStreamReader 复制的描述
返回在 index 处声明的名称空间前缀。如果是默认名称空间声明,则返回 null

指定者:
接口 XMLStreamReader 中的

JDK 1.6 中文手册