public interface XMLStreamWriter
XMLStreamWriter 接口指定如何编写 XML。 XMLStreamWriter 不对其输入执行良好的格式检查。但是writeCharacters方法需要对&、<和>进行转义 对于属性值,writeAttribute方法会对上面的字符加上"进行转义,以确保所有字符内容和属性值的格式正确。每个NAMESPACE和ATTRIBUTE都必须单独写入。
笔记:
Method | isRepairingNamespaces == 真 |
isRepairingNamespaces == 错误 |
||
---|---|---|---|---|
namespaceURI 绑定 | namespaceURI 未绑定 | namespaceURI 绑定 | namespaceURI 未绑定 | |
writeAttribute(namespaceURI, localName, value) |
前缀:localName =“值”[1] | xmlns:{generated}="namespaceURI" {generated}:localName="value" | 前缀:localName =“值”[1] | XMLStreamException |
writeAttribute(prefix, namespaceURI, localName, value) |
绑定到相同的前缀: 前缀:localName =“值”[1] 绑定到不同的前缀: xmlns:{generated}="namespaceURI" {generated}:localName="value" |
xmlns:prefix="namespaceURI" prefix:localName="value"[3] | 绑定到相同的前缀: 前缀:localName =“值”[1][2] 绑定到不同的前缀: XMLStreamException [2] |
xmlns:prefix="namespaceURI" prefix:localName="value"[2][5] |
writeStartElement(namespaceURI, localName) writeEmptyElement(namespaceURI, localName) |
<prefix:localName> [1] |
<{generated}:localName xmlns:{generated}="namespaceURI"> |
prefix:localName> [1] |
XMLStreamException |
writeStartElement(prefix, localName, namespaceURI) writeEmptyElement(prefix, localName, namespaceURI) |
绑定到相同的前缀:<prefix:localName> [1]绑定到不同的前缀: <{generated}:localName xmlns:{generated}="namespaceURI"> |
<prefix:localName xmlns:prefix="namespaceURI"> [4] |
绑定到相同的前缀:<prefix:localName> [1]绑定到不同的前缀: XMLStreamException |
<prefix:localName> |
- [1] 如果namespaceURI == default Namespace URI,则不写前缀
- [2] 如果前缀 == "" || null && namespaceURI == "",则不生成或写入任何前缀或命名空间声明
- [3] 如果前缀 == "" || null,则随机生成一个前缀
- [4] 如果前缀 == "" || null,然后将其视为默认命名空间,并且不生成或写入任何前缀,如果未绑定 namespaceURI,则生成并写入 xmlns 声明
- [5] 如果前缀 == "" || null,则它被视为定义默认命名空间的无效尝试并抛出 XMLStreamException
- 自从:
- 1.6
- 参见:
-
方法总结
修饰符和类型方法描述void
close()
关闭此编写器并释放与编写器关联的所有资源。void
flush()
将任何缓存数据写入底层输出机制。返回当前命名空间上下文。获取 uri 绑定到的前缀。getProperty
(String name) 从底层实现中获取功能/属性的值void
将 URI 绑定到默认命名空间 此 URI 绑定在当前 START_ELEMENT / END_ELEMENT 对的范围内。void
setNamespaceContext
(NamespaceContext context) 为前缀和 uri 绑定设置当前命名空间上下文。void
设置 uri 绑定到的前缀。void
writeAttribute
(String localName, String value) 将属性写入不带前缀的输出流。void
writeAttribute
(String namespaceURI, String localName, String value) 将属性写入输出流void
writeAttribute
(String prefix, String namespaceURI, String localName, String value) 将属性写入输出流void
writeCData
(String data) 写入 CData 部分void
writeCharacters
(char[] text, int start, int len) 将文本写入输出void
writeCharacters
(String text) 将文本写入输出void
writeComment
(String data) 写入包含数据的 xml 注释void
writeDefaultNamespace
(String namespaceURI) 将默认命名空间写入流void
编写 DTD 部分。void
writeEmptyElement
(String localName) 将空元素标记写入输出void
writeEmptyElement
(String namespaceURI, String localName) 将空元素标记写入输出void
writeEmptyElement
(String prefix, String localName, String namespaceURI) 将空元素标记写入输出void
关闭任何开始标签并写入相应的结束标签。void
根据编写器的内部状态将结束标记写入输出以确定事件的前缀和本地名称。void
writeEntityRef
(String name) 写入实体引用void
writeNamespace
(String prefix, String namespaceURI) 将命名空间写入输出流如果此方法的前缀参数是空字符串、“xmlns”或 null,此方法将委托给 writeDefaultNamespacevoid
writeProcessingInstruction
(String target) 编写处理指令void
writeProcessingInstruction
(String target, String data) 编写处理指令void
编写 XML 声明。void
writeStartDocument
(String version) 编写 XML 声明。void
writeStartDocument
(String encoding, String version) 编写 XML 声明。void
writeStartElement
(String localName) 将开始标记写入输出。void
writeStartElement
(String namespaceURI, String localName) 将开始标记写入输出void
writeStartElement
(String prefix, String localName, String namespaceURI) 将开始标记写入输出
-
方法详情
-
writeStartElement
将开始标记写入输出。所有 writeStartElement 方法都会在内部命名空间上下文中打开一个新范围。写入相应的 EndElement 会导致范围关闭。- 参数:
localName
- 标签的本地名称,不能为空- 抛出:
XMLStreamException
- 如果发生错误
-
writeStartElement
将开始标记写入输出- 参数:
namespaceURI
- 要使用的前缀的 namespaceURI,不能为 nulllocalName
- 标签的本地名称,不能为空- 抛出:
XMLStreamException
- 如果名称空间 URI 未绑定到前缀且 javax.xml.stream.isRepairingNamespaces 未设置为 true
-
writeStartElement
void writeStartElement(String prefix, String localName, String namespaceURI) throws XMLStreamException 将开始标记写入输出- 参数:
prefix
- 标签的前缀,不能为空localName
- 标签的本地名称,不能为空namespaceURI
- 绑定前缀的 uri,不能为 null- 抛出:
XMLStreamException
- 如果发生错误
-
writeEmptyElement
将空元素标记写入输出- 参数:
namespaceURI
- 绑定标签的 uri,不能为 nulllocalName
- 标签的本地名称,不能为空- 抛出:
XMLStreamException
- 如果名称空间 URI 未绑定到前缀且 javax.xml.stream.isRepairingNamespaces 未设置为 true
-
writeEmptyElement
void writeEmptyElement(String prefix, String localName, String namespaceURI) throws XMLStreamException 将空元素标记写入输出- 参数:
prefix
- 标签的前缀,不能为空localName
- 标签的本地名称,不能为空namespaceURI
- 绑定标签的 uri,不能为 null- 抛出:
XMLStreamException
- 如果发生错误
-
writeEmptyElement
将空元素标记写入输出- 参数:
localName
- 标签的本地名称,不能为空- 抛出:
XMLStreamException
- 如果发生错误
-
writeEndElement
根据编写器的内部状态将结束标记写入输出以确定事件的前缀和本地名称。- 抛出:
XMLStreamException
- 如果发生错误
-
writeEndDocument
关闭任何开始标签并写入相应的结束标签。- 抛出:
XMLStreamException
- 如果发生错误
-
close
关闭此编写器并释放与编写器关联的所有资源。这不能关闭底层输出流。- 抛出:
XMLStreamException
- 如果发生错误
-
flush
将任何缓存数据写入底层输出机制。- 抛出:
XMLStreamException
- 如果发生错误
-
writeAttribute
将属性写入不带前缀的输出流。- 参数:
localName
- 属性的本地名称value
- 属性值- 抛出:
IllegalStateException
- 如果当前状态不允许写入属性XMLStreamException
- 如果发生错误
-
writeAttribute
void writeAttribute(String prefix, String namespaceURI, String localName, String value) throws XMLStreamException 将属性写入输出流- 参数:
prefix
- 此属性的前缀namespaceURI
- 此属性前缀的 urilocalName
- 属性的本地名称value
- 属性值- 抛出:
IllegalStateException
- 如果当前状态不允许写入属性XMLStreamException
- 如果名称空间 URI 未绑定到前缀且 javax.xml.stream.isRepairingNamespaces 未设置为 true
-
writeAttribute
将属性写入输出流- 参数:
namespaceURI
- 此属性前缀的 urilocalName
- 属性的本地名称value
- 属性值- 抛出:
IllegalStateException
- 如果当前状态不允许写入属性XMLStreamException
- 如果名称空间 URI 未绑定到前缀且 javax.xml.stream.isRepairingNamespaces 未设置为 true
-
writeNamespace
将命名空间写入输出流如果此方法的前缀参数是空字符串、“xmlns”或 null,此方法将委托给 writeDefaultNamespace- 参数:
prefix
- 将此命名空间绑定到的前缀namespaceURI
- 将前缀绑定到的 uri- 抛出:
IllegalStateException
- 如果当前状态不允许写入命名空间XMLStreamException
- 如果发生错误
-
writeDefaultNamespace
将默认命名空间写入流- 参数:
namespaceURI
- 将默认命名空间绑定到的 uri- 抛出:
IllegalStateException
- 如果当前状态不允许写入命名空间XMLStreamException
- 如果发生错误
-
writeComment
写入包含数据的 xml 注释- 参数:
data
- 评论中包含的数据,可能为空- 抛出:
XMLStreamException
- 如果发生错误
-
writeProcessingInstruction
编写处理指令- 参数:
target
- 处理指令的目标,不能为空- 抛出:
XMLStreamException
- 如果发生错误
-
writeProcessingInstruction
编写处理指令- 参数:
target
- 处理指令的目标,不能为空data
- 处理指令中包含的数据,不能为空- 抛出:
XMLStreamException
- 如果发生错误
-
writeCData
写入 CData 部分- 参数:
data
- CData 部分中包含的数据,不能为空- 抛出:
XMLStreamException
- 如果发生错误
-
writeDTD
编写 DTD 部分。该字符串表示 XML 1.0 规范中的整个 doctypedecl 产品。- 参数:
dtd
- 要写入的 DTD- 抛出:
XMLStreamException
- 如果发生错误
-
writeEntityRef
写入实体引用- 参数:
name
- 实体名称- 抛出:
XMLStreamException
- 如果发生错误
-
writeStartDocument
编写 XML 声明。默认 XML 版本为 1.0,编码为 utf-8- 抛出:
XMLStreamException
- 如果发生错误
-
writeStartDocument
编写 XML 声明。将 XML 版本默认为 1.0- 参数:
version
- xml 文档的版本- 抛出:
XMLStreamException
- 如果发生错误
-
writeStartDocument
编写 XML 声明。请注意,编码参数不会设置底层输出的实际编码。必须在使用 XMLOutputFactory 创建 XMLStreamWriter 的实例时设置- 参数:
encoding
- xml 声明的编码version
- xml 文档的版本- 抛出:
XMLStreamException
- 如果给定的编码与底层流的编码不匹配
-
writeCharacters
将文本写入输出- 参数:
text
- 要写入的值- 抛出:
XMLStreamException
- 如果发生错误
-
writeCharacters
将文本写入输出- 参数:
text
- 要写入的值start
- 数组中的起始位置len
- 要写入的字符数- 抛出:
XMLStreamException
- 如果发生错误
-
getPrefix
获取 uri 绑定到的前缀。- 参数:
uri
- 前缀绑定到的 uri- 返回:
- 前缀或空
- 抛出:
XMLStreamException
- 如果发生错误
-
setPrefix
设置 uri 绑定到的前缀。此前缀绑定在当前 START_ELEMENT / END_ELEMENT 对的范围内。如果在写入 START_ELEMENT 之前调用此方法,则前缀将绑定在根范围内。- 参数:
prefix
- 绑定到 uri 的前缀,不能为 nulluri
- 绑定到前缀的 uri,可以为 null- 抛出:
XMLStreamException
- 如果发生错误
-
setDefaultNamespace
将 URI 绑定到默认命名空间 此 URI 绑定在当前 START_ELEMENT / END_ELEMENT 对的范围内。如果在写入 START_ELEMENT 之前调用此方法,则 uri 将绑定在根范围内。- 参数:
uri
- 绑定到默认命名空间的 uri,可以为 null- 抛出:
XMLStreamException
- 如果发生错误
-
setNamespaceContext
为前缀和 uri 绑定设置当前命名空间上下文。此上下文成为写入的根命名空间上下文,并将替换当前的根命名空间上下文。对 setPrefix 和 setDefaultNamespace 的后续调用将使用传递给该方法的上下文作为解析名称空间的根上下文来绑定名称空间。此方法只能在文档开头调用一次。它不会导致声明名称空间。如果在名称空间上下文中找到名称空间 URI 到前缀的映射,则将其视为已声明并且 StreamWriter 可以使用该前缀。- 参数:
context
- 用于此作者的命名空间上下文,不能为空- 抛出:
XMLStreamException
- 如果发生错误
-
getNamespaceContext
NamespaceContext getNamespaceContext()返回当前命名空间上下文。- 返回:
- 当前的命名空间上下文
-
getProperty
从底层实现中获取功能/属性的值- 参数:
name
- 属性的名称,不能为空- 返回:
- 财产的值
- 抛出:
IllegalArgumentException
- 如果不支持该属性NullPointerException
- 如果名称为空
-