java.lang.Object
javax.xml.stream.util.StreamReaderDelegate
- 所有已实现的接口:
XMLStreamConstants
,XMLStreamReader
这是派生 XMLStreamReader 过滤器的基类。此类旨在位于 XMLStreamReader 和应用程序的 XMLStreamReader 之间。默认情况下,每个方法只调用父接口上的相应方法。
- 自从:
- 1.6
- 参见:
-
字段摘要
在接口 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
-
构造方法总结
构造方法 -
方法总结
修饰符和类型方法描述void
close()
释放与此 Reader 关联的任何资源。int
返回此 START_ELEMENT 上的属性计数,此方法仅对 START_ELEMENT 或 ATTRIBUTE 有效。getAttributeLocalName
(int index) 返回所提供索引处属性的本地名称getAttributeName
(int index) 返回所提供索引处的属性的 qnamegetAttributeNamespace
(int index) 返回所提供索引处的属性的命名空间getAttributePrefix
(int index) 在提供的索引处返回此属性的前缀getAttributeType
(int index) 返回所提供索引处属性的 XML 类型getAttributeValue
(int index) 返回索引处的属性值getAttributeValue
(String namespaceUri, String localName) 返回具有命名空间和本地名称的属性的规范化属性值如果命名空间 URI 为空,则不检查命名空间是否相等返回在 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 的值,ENTITY_REFERENCE 的替换值,CDATA 部分的字符串值,SPACE 的字符串值事件,或 DTD 内部子集的字符串值。char[]
返回一个数组,其中包含来自此事件的字符。int
getTextCharacters
(int sourceStart, char[] target, int targetStart, int length) 获取与 CHARACTERS、SPACE 或 CDATA 事件关联的文本。int
返回文本字符数组中此 Text 事件的字符序列的长度。int
返回存储(此文本事件的)第一个字符的文本字符数组的偏移量。获取在 xml 声明中声明的 xml 版本 如果未声明则返回 nullboolean
hasName()
返回一个boolean,指示当前事件是否有名称(是 START_ELEMENT 或 END_ELEMENT)。boolean
hasNext()
如果有更多解析事件则返回 true,如果没有更多事件则返回 false。boolean
hasText()
返回一个boolean,指示当前事件是否有文本。boolean
isAttributeSpecified
(int index) 返回一个boolean,指示是否默认创建此属性boolean
如果光标指向字符数据事件则返回真boolean
如果光标指向结束标记则返回 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
检查文档中是否设置了独立
-
构造方法详细信息
-
StreamReaderDelegate
public StreamReaderDelegate()构造一个没有父级的空过滤器。 -
StreamReaderDelegate
构造具有指定父级的过滤器。- 参数:
reader
- 父母
-
-
方法详情
-
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 部分(另一个字符)
4- 然后是下一个字符部分(另一个字符)
5- 然后是 END_ELEMENTNOTE:空元素(例如
<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()) // 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
从接口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
从接口XMLStreamReader
复制的描述测试当前事件是否属于给定类型,以及命名空间和名称是否与当前事件的当前命名空间和名称相匹配。如果 namespaceURI 为 null,则不检查是否相等;如果 localName 为 null,则不检查是否相等。- 指定者:
require
在接口XMLStreamReader
中- 参数:
type
- 事件类型namespaceURI
- 事件的 uri,可能为 nulllocalName
- 事件的本地名称,可以为 null- 抛出:
XMLStreamException
- 如果所需值不匹配。
-
hasNext
从接口XMLStreamReader
复制的描述如果有更多解析事件则返回 true,如果没有更多事件则返回 false。如果 XMLStreamReader 的当前状态为 END_DOCUMENT,则此方法将返回 false- 指定者:
hasNext
在接口XMLStreamReader
中- 返回:
- 如果有更多事件,则为 true,否则为 false
- 抛出:
XMLStreamException
- 如果存在检测下一个状态的致命错误
-
close
从接口XMLStreamReader
复制的描述释放与此 Reader 关联的任何资源。此方法不会关闭基础输入源。- 指定者:
close
在接口XMLStreamReader
中- 抛出:
XMLStreamException
- 如果释放关联资源时出错
-
getNamespaceURI
从接口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
从接口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
从接口XMLStreamReader
复制的描述返回具有命名空间和本地名称的属性的规范化属性值如果命名空间 URI 为空,则不检查命名空间是否相等- 指定者:
getAttributeValue
在接口XMLStreamReader
中- 参数:
namespaceUri
- 属性的命名空间localName
- 属性的本地名称,不能为空- 返回:
- 返回属性的值,如果找不到则返回 null
-
getAttributeCount
public int getAttributeCount()从接口XMLStreamReader
复制的描述返回此 START_ELEMENT 上的属性计数,此方法仅对 START_ELEMENT 或 ATTRIBUTE 有效。此计数不包括命名空间定义。属性索引是从零开始的。- 指定者:
getAttributeCount
在接口XMLStreamReader
中- 返回:
- 返回属性的数量
-
getAttributeName
从接口XMLStreamReader
复制的描述返回所提供索引处的属性的 qname- 指定者:
getAttributeName
在接口XMLStreamReader
中- 参数:
index
- 属性的位置- 返回:
- 属性的 QName
-
getAttributePrefix
从接口XMLStreamReader
复制的描述在提供的索引处返回此属性的前缀- 指定者:
getAttributePrefix
在接口XMLStreamReader
中- 参数:
index
- 属性的位置- 返回:
- 属性的前缀
-
getAttributeNamespace
从接口XMLStreamReader
复制的描述返回所提供索引处的属性的命名空间- 指定者:
getAttributeNamespace
在接口XMLStreamReader
中- 参数:
index
- 属性的位置- 返回:
- 名称空间 URI(可以为空)
-
getAttributeLocalName
从接口XMLStreamReader
复制的描述返回所提供索引处属性的本地名称- 指定者:
getAttributeLocalName
在接口XMLStreamReader
中- 参数:
index
- 属性的位置- 返回:
- 属性的本地名称
-
getAttributeType
从接口XMLStreamReader
复制的描述返回所提供索引处属性的 XML 类型- 指定者:
getAttributeType
在接口XMLStreamReader
中- 参数:
index
- 属性的位置- 返回:
- 属性的 XML 类型
-
getAttributeValue
从接口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
从接口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”开头的文本被复制到从“targetStart”开始的“target”中。最多复制“长度”个字符。返回实际复制的字符数。 “sourceStart”参数必须大于或等于 0 且小于或等于与事件关联的字符数。通常,请求文本从“sourceStart”0 开始。如果实际复制的字符数小于“length”,则没有更多文本。否则,需要进行后续调用,直到检索到所有文本。例如:
如果底层源中存在任何 XML 错误,则可能会抛出 XMLStreamException。 “targetStart”参数必须大于或等于 0 且小于“target”的长度,Length 必须大于 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
复制的描述返回文本字符数组中此 Text 事件的字符序列的长度。- 指定者:
getTextLength
在接口XMLStreamReader
中- 返回:
- 文字的长度
-
getEncoding
从接口XMLStreamReader
复制的描述如果已知则返回输入编码,如果未知则返回 null。- 指定者:
getEncoding
在接口XMLStreamReader
中- 返回:
- 此实例的编码或 null
-
hasText
public boolean hasText()从接口XMLStreamReader
复制的描述返回一个boolean,指示当前事件是否有文本。以下事件具有文本:CHARACTERS、DTD、ENTITY_REFERENCE、COMMENT、SPACE- 指定者:
hasText
在接口XMLStreamReader
中- 返回:
- 如果事件有文本,则为 true,否则为 false
-
getLocation
从接口XMLStreamReader
复制的描述返回处理器的当前位置。如果 Location 未知,则处理器应返回 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
复制的描述返回一个boolean,指示当前事件是否有名称(是 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
中- 返回:
- 前缀或空
-
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
中- 返回:
- 目标或空
-
getPIData
从接口XMLStreamReader
复制的描述获取处理指令的数据部分- 指定者:
getPIData
在接口XMLStreamReader
中- 返回:
- 数据或空
-
getProperty
从接口XMLStreamReader
复制的描述从底层实现中获取功能/属性的值- 指定者:
getProperty
在接口XMLStreamReader
中- 参数:
name
- 属性的名称,不能为空- 返回:
- 财产的值
-