java.lang.Object
javax.xml.stream.util.StreamReaderDelegate
- 所有已实现的接口:
-
XMLStreamConstants
,XMLStreamReader
这是用于派生XMLStreamReader过滤器的基类。该类设计为位于XMLStreamReader和应用程序的XMLStreamReader之间。默认情况下,每个方法什么也不做,只是调用父接口上的相应方法。
- 自:
- 1.6
- 参见:
-
Field Summary
Fields declared in interface 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
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
close()
释放与此Reader关联的任何资源。int
返回此START_ELEMENT上的属性计数,此方法仅在START_ELEMENT或ATTRIBUTE上有效。getAttributeLocalName
(int index) 返回提供的索引处属性的localNamegetAttributeName
(int index) 返回提供的索引处属性的qnamegetAttributeNamespace
(int index) 返回提供的索引处属性的命名空间getAttributePrefix
(int index) 返回提供的索引处属性的前缀getAttributeType
(int index) 返回提供的索引处属性的XML类型getAttributeValue
(int index) 返回索引处属性的值getAttributeValue
(String namespaceUri, String localName) 返回具有命名空间和localName的属性的规范化属性值。如果namespaceURI为null,则不检查命名空间是否相等返回xml声明中声明的字符编码。如果未声明任何字符编码,则返回null读取仅文本元素的内容,如果不是仅文本元素,则抛出异常。如果已知,则返回输入编码,否则返回null。int
返回指示光标指向的事件类型的整数代码。返回当前事件的(本地)名称。返回处理器的当前位置。getName()
返回当前START_ELEMENT或END_ELEMENT事件的QName返回当前位置的只读命名空间上下文。int
返回在此START_ELEMENT或END_ELEMENT上声明的命名空间的计数,此方法仅在START_ELEMENT、END_ELEMENT或NAMESPACE上有效。getNamespacePrefix
(int index) 返回在索引处声明的命名空间的前缀。如果当前事件是START_ELEMENT或END_ELEMENT,则此方法返回前缀或默认命名空间的URI。getNamespaceURI
(int index) 返回在索引处声明的命名空间的URI。getNamespaceURI
(String prefix) 返回给定前缀的URI。获取此实例的父级。获取处理指令的数据部分获取处理指令的目标返回当前事件的前缀,如果事件没有前缀,则返回nullgetProperty
(String name) 从底层实现获取特性/属性的值getText()
将解析事件的当前值作为字符串返回,这将返回CHARACTERS事件的字符串值,返回COMMENT的值,实体引用的替换值,CDATA部分的字符串值,SPACE事件的字符串值,或DTD内部子集的字符串值。char[]
返回包含此事件字符的数组。int
getTextCharacters
(int sourceStart, char[] target, int targetStart, int length) 获取与CHARACTERS、SPACE或CDATA事件相关联的文本。int
返回此Text事件中字符序列的长度。int
返回存储第一个字符(此文本事件的)的文本字符数组中的偏移量。获取xml声明中声明的xml版本。如果未声明任何版本,则返回nullboolean
hasName()
返回一个布尔值,指示当前事件是否具有名称(即START_ELEMENT或END_ELEMENT)。boolean
hasNext()
如果有更多的解析事件,则返回true,否则返回false。boolean
hasText()
返回一个布尔值,指示当前事件是否具有文本。boolean
isAttributeSpecified
(int index) 返回一个布尔值,指示此属性是否由默认创建boolean
如果光标指向字符数据事件,则返回trueboolean
如果光标指向结束标记,则返回true(否则返回false)boolean
从xml声明中获取独立声明boolean
如果光标指向开始标记,则返回true(否则返回false)boolean
如果光标指向全部为空格的字符数据事件,则返回trueint
next()
获取下一个解析事件 - 处理器可以将所有连续的字符数据返回为单个块,也可以将其拆分为多个块。int
nextTag()
跳过任何空格(isWhiteSpace()返回true)、COMMENT或PROCESSING_INSTRUCTION,直到达到START_ELEMENT或END_ELEMENT。void
测试当前事件是否为给定类型,并且命名空间和名称是否与当前事件的当前命名空间和名称匹配。void
setParent
(XMLStreamReader reader) 设置此实例的父级。boolean
检查文档中是否设置了独立声明
-
Constructor Details
-
StreamReaderDelegate
public StreamReaderDelegate()构造一个没有父级的空过滤器。 -
StreamReaderDelegate
构造一个具有指定父级的过滤器。- 参数:
-
reader
- 父级
-
-
Method Details
-
setParent
设置此实例的父级。- 参数:
-
reader
- 新的父级
-
getParent
获取此实例的父级。- 返回:
- 父级,如果未设置则返回null
-
next
从接口复制的描述: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部分(另一个CHARACTERS)
4- 然后是下一个字符部分(另一个CHARACTERS)
5- 然后是END_ELEMENT注意: 空元素(例如
<tag/>
)将报告为两个单独的事件:START_ELEMENT,END_ELEMENT - 这保留了空元素与<tag></tag>
的解析等效性。- 指定者:
-
next
在接口XMLStreamReader
- 返回:
- 与当前解析事件对应的整数代码
- 抛出:
-
XMLStreamException
- 如果处理底层XML源时出现错误 - 参见:
-
nextTag
从接口复制的描述: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()) // 跳过空格 || (eventType == XMLStreamConstants.CDATA && isWhiteSpace()) // 跳过空格 || 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
从接口复制的描述:XMLStreamReader
Reads the content of a text-only element, an exception is thrown if this is not a text-only element. Regardless of value of javax.xml.stream.isCoalescing this method always returns coalesced content.
Precondition: the current event is START_ELEMENT.
Postcondition: the current event is the corresponding END_ELEMENT.
The method does the following (implementations are free to optimized but must do equivalent processing):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();
- Specified by:
-
getElementText
in interfaceXMLStreamReader
- Returns:
- the content of a text-only element
- Throws:
-
XMLStreamException
- if the current event is not a START_ELEMENT or if a non text element is encountered
-
require
Description copied from interface:XMLStreamReader
Test if the current event is of the given type and if the namespace and name match the current namespace and name of the current event. If the namespaceURI is null it is not checked for equality, if the localName is null it is not checked for equality.- Specified by:
-
require
in interfaceXMLStreamReader
- Parameters:
-
type
- the event type -
namespaceURI
- the uri of the event, may be null -
localName
- the localName of the event, may be null - Throws:
-
XMLStreamException
- if the required values are not matched.
-
hasNext
Description copied from interface:XMLStreamReader
Returns true if there are more parsing events and false if there are no more events. This method will return false if the current state of the XMLStreamReader is END_DOCUMENT- Specified by:
-
hasNext
in interfaceXMLStreamReader
- Returns:
- true if there are more events, false otherwise
- Throws:
-
XMLStreamException
- if there is a fatal error detecting the next state
-
close
Description copied from interface:XMLStreamReader
Frees any resources associated with this Reader. This method does not close the underlying input source.- Specified by:
-
close
in interfaceXMLStreamReader
- Throws:
-
XMLStreamException
- if there are errors freeing associated resources
-
getNamespaceURI
Description copied from interface:XMLStreamReader
Return the uri for the given prefix. The uri returned depends on the current state of the processor.NOTE:The 'xml' prefix is bound as defined in Namespaces in XML specification to "http://www.w3.org/XML/1998/namespace".
NOTE: The 'xmlns' prefix must be resolved to following namespace http://www.w3.org/2000/xmlns/
- Specified by:
-
getNamespaceURI
in interfaceXMLStreamReader
- Parameters:
-
prefix
- The prefix to lookup, may not be null - Returns:
- the uri bound to the given prefix or null if it is not bound
-
getNamespaceContext
Description copied from interface:XMLStreamReader
Returns a read only namespace context for the current position. The context is transient and only valid until a call to next() changes the state of the reader.- Specified by:
-
getNamespaceContext
in interfaceXMLStreamReader
- Returns:
- return a namespace context
-
isStartElement
public boolean isStartElement()Description copied from interface:XMLStreamReader
Returns true if the cursor points to a start tag (otherwise false)- Specified by:
-
isStartElement
in interfaceXMLStreamReader
- Returns:
- true if the cursor points to a start tag, false otherwise
-
isEndElement
public boolean isEndElement()Description copied from interface:XMLStreamReader
Returns true if the cursor points to an end tag (otherwise false)- Specified by:
-
isEndElement
in interfaceXMLStreamReader
- Returns:
- true if the cursor points to an end tag, false otherwise
-
isCharacters
public boolean isCharacters()Description copied from interface:XMLStreamReader
Returns true if the cursor points to a character data event- Specified by:
-
isCharacters
in interfaceXMLStreamReader
- Returns:
- true if the cursor points to character data, false otherwise
-
isWhiteSpace
public boolean isWhiteSpace()Description copied from interface:XMLStreamReader
Returns true if the cursor points to a character data event that consists of all whitespace- Specified by:
-
isWhiteSpace
in interfaceXMLStreamReader
- Returns:
- true if the cursor points to all whitespace, false otherwise
-
getAttributeValue
Description copied from interface:XMLStreamReader
Returns the normalized attribute value of the attribute with the namespace and localName If the namespaceURI is null the namespace is not checked for equality- Specified by:
-
getAttributeValue
in interfaceXMLStreamReader
- Parameters:
-
namespaceUri
- the namespace of the attribute -
localName
- the local name of the attribute, cannot be null - Returns:
- returns the value of the attribute , returns null if not found
-
getAttributeCount
public int getAttributeCount()Description copied from interface:XMLStreamReader
Returns the count of attributes on this START_ELEMENT, this method is only valid on a START_ELEMENT or ATTRIBUTE. This count excludes namespace definitions. Attribute indices are zero-based.- Specified by:
-
getAttributeCount
in interfaceXMLStreamReader
- Returns:
- returns the number of attributes
-
getAttributeName
从接口复制的描述:XMLStreamReader
返回提供的索引处属性的QName- 指定者:
-
getAttributeName
在接口XMLStreamReader
- 参数:
-
index
- 属性的位置 - 返回:
- 属性的QName
-
getAttributePrefix
从接口复制的描述:XMLStreamReader
返回提供的索引处属性的前缀- 指定者:
-
getAttributePrefix
在接口XMLStreamReader
- 参数:
-
index
- 属性的位置 - 返回:
- 属性的前缀
-
getAttributeNamespace
从接口复制的描述:XMLStreamReader
返回提供的索引处属性的命名空间- 指定者:
-
getAttributeNamespace
在接口XMLStreamReader
- 参数:
-
index
- 属性的位置 - 返回:
- 命名空间URI(可以为null)
-
getAttributeLocalName
从接口复制的描述:XMLStreamReader
返回提供的索引处属性的本地名称- 指定者:
-
getAttributeLocalName
在接口XMLStreamReader
- 参数:
-
index
- 属性的位置 - 返回:
- 属性的本地名称
-
getAttributeType
从接口复制的描述:XMLStreamReader
返回提供的索引处属性的XML类型- 指定者:
-
getAttributeType
在接口XMLStreamReader
- 参数:
-
index
- 属性的位置 - 返回:
- 属性的XML类型
-
getAttributeValue
从接口复制的描述:XMLStreamReader
返回索引处属性的值- 指定者:
-
getAttributeValue
在接口XMLStreamReader
- 参数:
-
index
- 属性的位置 - 返回:
- 属性值
-
isAttributeSpecified
public boolean isAttributeSpecified(int index) 从接口复制的描述:XMLStreamReader
返回一个布尔值,指示此属性是否是默认创建的- 指定者:
-
isAttributeSpecified
在接口XMLStreamReader
- 参数:
-
index
- 属性的位置 - 返回:
- 如果这是一个默认属性,则为true
-
getNamespaceCount
public int getNamespaceCount()从接口复制的描述:XMLStreamReader
返回在此START_ELEMENT或END_ELEMENT上声明的命名空间的计数,此方法仅在START_ELEMENT、END_ELEMENT或NAMESPACE上有效。在END_ELEMENT上,计数是即将超出范围的命名空间。这相当于SAX回调报告的结束元素事件的信息。- 指定者:
-
getNamespaceCount
在接口XMLStreamReader
- 返回:
- 返回此特定元素上声明的命名空间数量
-
getNamespacePrefix
从接口复制的描述:XMLStreamReader
返回在索引处声明的命名空间的前缀。如果这是默认命名空间声明,则返回null- 指定者:
-
getNamespacePrefix
在接口XMLStreamReader
- 参数:
-
index
- 命名空间声明的位置 - 返回:
- 返回命名空间前缀
-
getNamespaceURI
从接口复制的描述:XMLStreamReader
返回在索引处声明的命名空间的URI- 指定者:
-
getNamespaceURI
在接口XMLStreamReader
- 参数:
-
index
- 命名空间声明的位置 - 返回:
- 返回命名空间URI
-
getEventType
public int getEventType()从接口复制的描述:XMLStreamReader
返回一个整数代码,指示光标指向的事件类型。初始事件类型为XMLStreamConstants.START_DOCUMENT
。- 指定者:
-
getEventType
在接口XMLStreamReader
- 返回:
- 当前事件的类型
-
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”开始的文本被复制到“target”从“targetStart”开始。最多复制“length”个字符。返回实际复制的字符数。如果实际复制的字符数少于“length”,则没有更多文本。否则,需要进行后续调用,直到检索到所有文本。例如:
如果底层源中存在任何XML错误,则可能会抛出XMLStreamException。"targetStart"参数必须大于或等于0且小于"target"的长度,长度必须大于0且"targetStart + length"必须小于或等于"target"的长度。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; }
- 指定者:
-
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
返回此文本事件在文本字符数组中的字符序列的长度。- 指定者:
-
getTextLength
在接口XMLStreamReader
- 返回:
- 文本的长度
-
getEncoding
从接口复制的描述:XMLStreamReader
如果已知,则返回输入编码;如果未知,则返回null。- 指定者:
-
getEncoding
在接口XMLStreamReader
- 返回:
- 此实例的编码或null
-
hasText
public boolean hasText()从接口复制的描述:XMLStreamReader
返回一个布尔值,指示当前事件是否具有文本。以下事件具有文本:CHARACTERS、DTD、ENTITY_REFERENCE、COMMENT、SPACE- 指定者:
-
hasText
在接口XMLStreamReader
- 返回:
- 如果事件具有文本,则为true;否则为false
-
getLocation
从接口复制的描述:XMLStreamReader
返回处理器的当前位置。如果位置未知,处理器应返回一个Location的实现,该实现对于位置返回-1,对于publicId和systemId返回null。位置信息仅在调用next()之前有效。- 指定者:
-
getLocation
在接口XMLStreamReader
- 返回:
- 光标的位置
-
getName
从接口复制的描述:XMLStreamReader
返回当前START_ELEMENT或END_ELEMENT事件的QName- 指定者:
-
getName
在接口XMLStreamReader
- 返回:
- 当前START_ELEMENT或END_ELEMENT事件的QName
-
getLocalName
从接口复制的描述:XMLStreamReader
返回当前事件的(本地)名称。对于START_ELEMENT或END_ELEMENT,返回当前元素的(本地)名称。对于ENTITY_REFERENCE,返回实体名称。当前事件必须是START_ELEMENT或END_ELEMENT,或ENTITY_REFERENCE- 指定者:
-
getLocalName
在接口XMLStreamReader
- 返回:
- 本地名称
-
hasName
public boolean hasName()从接口复制的描述:XMLStreamReader
返回一个布尔值,指示当前事件是否具有名称(是START_ELEMENT或END_ELEMENT)。- 指定者:
-
hasName
在接口XMLStreamReader
- 返回:
- 如果事件具有名称,则为true;否则为false
-
getNamespaceURI
从接口复制的描述:XMLStreamReader
如果当前事件是START_ELEMENT或END_ELEMENT,则此方法返回前缀或默认命名空间的URI。如果事件没有前缀,则返回null。- 指定者:
-
getNamespaceURI
在接口XMLStreamReader
- 返回:
- 绑定到此元素前缀的URI、默认命名空间或null
-
getPrefix
从接口复制的描述:XMLStreamReader
返回当前事件的前缀,如果事件没有前缀则返回null- 指定者:
-
getPrefix
在接口XMLStreamReader
- 返回:
- 前缀或null
-
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
从接口复制的描述:XMLStreamReader
返回xml声明中声明的字符编码。如果未声明,则返回null- 指定者:
-
getCharacterEncodingScheme
在接口XMLStreamReader
- 返回:
- 文档中声明的编码或null
-
getPITarget
从接口复制的描述:XMLStreamReader
获取处理指令的目标- 指定者:
-
getPITarget
在接口XMLStreamReader
- 返回:
- 目标或null
-
getPIData
从接口复制的描述:XMLStreamReader
获取处理指令的数据部分- 指定者:
-
getPIData
在接口XMLStreamReader
中 - 返回值:
- 数据或null
-
getProperty
从接口中复制的描述:XMLStreamReader
获取底层实现的特性/属性的值- 指定者:
-
getProperty
在接口XMLStreamReader
中 - 参数:
-
name
- 属性的名称,不可为null - 返回值:
- 属性的值
-