java.lang.Object javax.xml.stream.util.StreamReaderDelegate
public class StreamReaderDelegate
该类是用于派生 XMLStreamReader 过滤器的基类。 此类设计用于 XMLStreamReader 和应用程序的 XMLStreamReader 之间。默认情况下,每种方法除了调用父接口中的相应方法之外,不执行任何操作。
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 |
构造方法详细信息 |
---|
public StreamReaderDelegate()
public StreamReaderDelegate(XMLStreamReader reader)
reader
- 父过滤器
方法详细信息 |
---|
public void setParent(XMLStreamReader reader)
reader
- 新的父实例
public XMLStreamReader getParent()
public int next() throws XMLStreamException
XMLStreamReader
复制的描述
假设给定以下 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
public int nextTag() throws XMLStreamException
XMLStreamReader
复制的描述
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
XMLStreamException
- 如果当前事件不是空格、PROCESSING_INSTRUCTION、START_ELEMENT 或 END_ELEMENT
public String getElementText() throws XMLStreamException
XMLStreamReader
复制的描述
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 或者遇到了非文本元素
public void require(int type, String namespaceURI, String localName) throws XMLStreamException
XMLStreamReader
复制的描述
XMLStreamReader
中的
require
type
- 事件类型
namespaceURI
- 事件的 URI,可以为 null
localName
- 事件的 localName,可以为 null
XMLStreamException
- 如果所需值不匹配。
public boolean hasNext() throws XMLStreamException
XMLStreamReader
复制的描述
XMLStreamReader
中的
hasNext
XMLStreamException
- 如果检测下一个状态时发生严重错误
public void close() throws XMLStreamException
XMLStreamReader
复制的描述
XMLStreamReader
中的
close
XMLStreamException
- 如果释放关联资源时发生错误
public String getNamespaceURI(String prefix)
XMLStreamReader
复制的描述
注:根据 Namespaces in XML 规范中的定义,'xml' 前缀被绑定到 "http://www.w3.org/XML/1998/namespace"。
注:'xmlns' 前缀必须被解析到以下名称空间:http://www.w3.org/2000/xmlns/
XMLStreamReader
中的
getNamespaceURI
prefix
- 要查找的前缀,不可以为 null
public NamespaceContext getNamespaceContext()
XMLStreamReader
复制的描述
XMLStreamReader
中的
getNamespaceContext
public boolean isStartElement()
XMLStreamReader
复制的描述
XMLStreamReader
中的
isStartElement
public boolean isEndElement()
XMLStreamReader
复制的描述
XMLStreamReader
中的
isEndElement
public boolean isCharacters()
XMLStreamReader
复制的描述
XMLStreamReader
中的
isCharacters
public boolean isWhiteSpace()
XMLStreamReader
复制的描述
XMLStreamReader
中的
isWhiteSpace
public String getAttributeValue(String namespaceUri, String localName)
XMLStreamReader
复制的描述
XMLStreamReader
中的
getAttributeValue
namespaceUri
- 属性的名称空间
localName
- 属性的本地名称,不可以为 null
public int getAttributeCount()
XMLStreamReader
复制的描述
XMLStreamReader
中的
getAttributeCount
public QName getAttributeName(int index)
XMLStreamReader
复制的描述
XMLStreamReader
中的
getAttributeName
index
- 属性的位置
public String getAttributePrefix(int index)
XMLStreamReader
复制的描述
XMLStreamReader
中的
getAttributePrefix
index
- 属性的位置
public String getAttributeNamespace(int index)
XMLStreamReader
复制的描述
XMLStreamReader
中的
getAttributeNamespace
index
- 属性的位置
public String getAttributeLocalName(int index)
XMLStreamReader
复制的描述
XMLStreamReader
中的
getAttributeLocalName
index
- 属性的位置
public String getAttributeType(int index)
XMLStreamReader
复制的描述
XMLStreamReader
中的
getAttributeType
index
- 属性的位置
public String getAttributeValue(int index)
XMLStreamReader
复制的描述
XMLStreamReader
中的
getAttributeValue
index
- 属性的位置
public boolean isAttributeSpecified(int index)
XMLStreamReader
复制的描述
XMLStreamReader
中的
isAttributeSpecified
index
- 属性的位置
public int getNamespaceCount()
XMLStreamReader
复制的描述
XMLStreamReader
中的
getNamespaceCount
public String getNamespacePrefix(int index)
XMLStreamReader
复制的描述
XMLStreamReader
中的