public interface XMLStreamWriter
XMLStreamWriter接口指定了如何编写XML。XMLStreamWriter不会对其输入执行格式检查。但是,writeCharacters方法需要转义&、<和>。对于属性值,writeAttribute方法将转义上述字符以及",以确保所有字符内容和属性值都是格式良好的。每个NAMESPACE和ATTRIBUTE必须单独编写。
注:
| 方法 | isRepairingNamespaces == true |
isRepairingNamespaces == false |
||
|---|---|---|---|---|
| 命名空间URI已绑定 | 命名空间URI未绑定 | 命名空间URI已绑定 | 命名空间URI未绑定 | |
writeAttribute(namespaceURI, localName, value) |
前缀:localName="value" [1] | xmlns:{generated}="namespaceURI" {generated}:localName="value" | 前缀:localName="value" [1] | XMLStreamException |
writeAttribute(prefix, namespaceURI, localName, value) |
绑定到相同前缀: 前缀:localName="value" [1] 绑定到不同前缀: xmlns:{generated}="namespaceURI" {generated}:localName="value" |
xmlns:prefix="namespaceURI" prefix:localName="value" [3] | 绑定到相同前缀: 前缀:localName="value" [1][2] 绑定到不同前缀: XMLStreamException[2] |
xmlns:prefix="namespaceURI" prefix:localName="value" [2][5] |
writeStartElement(namespaceURI, localName)writeEmptyElement(namespaceURI, localName) |
<前缀:localName> [1] |
<{generated}:localName xmlns:{generated}="namespaceURI"> |
前缀:localName> [1] |
XMLStreamException |
writeStartElement(prefix, localName, namespaceURI)writeEmptyElement(prefix, localName, namespaceURI) |
绑定到相同前缀:<前缀:localName> [1]绑定到不同前缀: <{generated}:localName xmlns:{generated}="namespaceURI"> |
<前缀:localName xmlns:prefix="namespaceURI"> [4] |
绑定到相同前缀:<前缀:localName> [1]绑定到不同前缀: XMLStreamException |
<前缀:localName> |
- [1] 如果namespaceURI == 默认命名空间URI,则不会写入前缀
- [2] 如果前缀 == "" || null && namespaceURI == "",则不会生成或写入前缀或命名空间声明
- [3] 如果前缀 == "" || null,则会随机生成一个前缀
- [4] 如果前缀 == "" || null,则将其视为默认命名空间,并且不会生成或写入前缀,如果命名空间URI未绑定,则会生成并写入一个xmlns声明
- [5] 如果前缀 == "" || null,则将其视为尝试定义默认命名空间的无效操作,并抛出XMLStreamException
- 自从:
- 1.6
- 参见:
-
Method Summary
Modifier and TypeMethodDescriptionvoidclose()关闭此写入器并释放与写入器关联的任何资源。voidflush()将任何缓存的数据写入底层输出机制。返回当前命名空间上下文。获取URI绑定的前缀。getProperty(String name) 从底层实现中获取特性/属性的值void将URI绑定到默认命名空间。此URI在当前START_ELEMENT / END_ELEMENT对的范围内绑定。voidsetNamespaceContext(NamespaceContext context) 为前缀和URI绑定设置当前命名空间上下文。void设置URI绑定的前缀。voidwriteAttribute(String localName, String value) 在输出流中写入不带前缀的属性。voidwriteAttribute(String namespaceURI, String localName, String value) 在输出流中写入属性。voidwriteAttribute(String prefix, String namespaceURI, String localName, String value) 在输出流中写入属性。voidwriteCData(String data) 写入CData部分voidwriteCharacters(char[] text, int start, int len) 写入文本到输出voidwriteCharacters(String text) 写入文本到输出voidwriteComment(String data) 写入带有封闭数据的XML注释voidwriteDefaultNamespace(String namespaceURI) 将默认命名空间写入流void写入DTD部分。voidwriteEmptyElement(String localName) 将空元素标记写入输出voidwriteEmptyElement(String namespaceURI, String localName) 将空元素标记写入输出voidwriteEmptyElement(String prefix, String localName, String namespaceURI) 将空元素标记写入输出void关闭任何开始标记并写入相应的结束标记。void根据写入器的内部状态确定事件的前缀和本地名称,将结束标记写入输出。voidwriteEntityRef(String name) 写入实体引用voidwriteNamespace(String prefix, String namespaceURI) 将命名空间写入输出流。如果此方法的前缀参数为空字符串、"xmlns"或null,则此方法将委托给writeDefaultNamespacevoidwriteProcessingInstruction(String target) 写入处理指令voidwriteProcessingInstruction(String target, String data) 写入处理指令void写入XML声明。voidwriteStartDocument(String version) 写入XML声明。voidwriteStartDocument(String encoding, String version) 写入XML声明。voidwriteStartElement(String localName) 向输出写入开始标记。voidwriteStartElement(String namespaceURI, String localName) 向输出写入开始标记voidwriteStartElement(String prefix, String localName, String namespaceURI) 向输出写入开始标记
-
Method Details
-
writeStartElement
向输出写入开始标记。所有writeStartElement方法在内部命名空间上下文中打开一个新范围。写入相应的EndElement会导致范围关闭。- 参数:
-
localName- 标签的本地名称,不得为null - 抛出:
-
XMLStreamException- 如果发生错误
-
writeStartElement
向输出写入开始标记- 参数:
-
namespaceURI- 要使用的前缀的命名空间URI,不得为null -
localName- 标签的本地名称,不得为null - 抛出:
-
XMLStreamException- 如果命名空间URI未绑定到前缀且javax.xml.stream.isRepairingNamespaces未设置为true
-
writeStartElement
void writeStartElement(String prefix, String localName, String namespaceURI) throws XMLStreamException 向输出写入开始标记- 参数:
-
prefix- 标签的前缀,不得为null -
localName- 标签的本地名称,不得为null -
namespaceURI- 要将前缀绑定到的URI,不得为null - 抛出:
-
XMLStreamException- 如果发生错误
-
writeEmptyElement
向输出写入空元素标记- 参数:
-
namespaceURI- 要将标签绑定到的URI,不得为null -
localName- 标签的本地名称,不得为null - 抛出:
-
XMLStreamException- 如果命名空间URI未绑定到前缀且javax.xml.stream.isRepairingNamespaces未设置为true
-
writeEmptyElement
void writeEmptyElement(String prefix, String localName, String namespaceURI) throws XMLStreamException 向输出写入空元素标记- 参数:
-
prefix- 标签的前缀,不得为null -
localName- 标签的本地名称,不得为null -
namespaceURI- 要将标签绑定到的URI,不得为null - 抛出:
-
XMLStreamException- 如果发生错误
-
writeEmptyElement
向输出写入空元素标记- 参数:
-
localName- 标签的本地名称,不得为null - 抛出:
-
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- 此属性的前缀的URI -
localName- 属性的本地名称 -
value- 属性的值 - 抛出:
-
IllegalStateException- 如果当前状态不允许写入属性 -
XMLStreamException- 如果命名空间URI未绑定到前缀且javax.xml.stream.isRepairingNamespaces未设置为true
-
writeAttribute
写入一个属性到输出流中。- 参数:
-
namespaceURI- 此属性的前缀的URI -
localName- 属性的本地名称 -
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- 注释中包含的数据,可以为null - 抛出:
-
XMLStreamException- 如果发生错误
-
writeProcessingInstruction
写入处理指令- 参数:
-
target- 处理指令的目标,不得为null - 抛出:
-
XMLStreamException- 如果发生错误
-
writeProcessingInstruction
写入处理指令- 参数:
-
target- 处理指令的目标,不得为null -
data- 处理指令中包含的数据,不得为null - 抛出:
-
XMLStreamException- 如果发生错误
-
writeCData
写入CData部分- 参数:
-
data- CData部分中包含的数据,不得为null - 抛出:
-
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 - 返回:
- 前缀或null
- 抛出:
-
XMLStreamException- 如果发生错误
-
setPrefix
设置前缀绑定的URI。此前缀在当前START_ELEMENT / END_ELEMENT对的范围内绑定。如果在写入START_ELEMENT之前调用此方法,则前缀将绑定在根范围内。- 参数:
-
prefix- 要绑定到URI的前缀,不得为null -
uri- 要绑定到前缀的URI,可以为null - 抛出:
-
XMLStreamException- 如果发生错误
-
setDefaultNamespace
将URI绑定到默认命名空间。此URI在当前START_ELEMENT / END_ELEMENT对的范围内绑定。如果在写入START_ELEMENT之前调用此方法,则URI将绑定在根范围内。- 参数:
-
uri- 要绑定到默认命名空间的URI,可以为null - 抛出:
-
XMLStreamException- 如果发生错误
-
setNamespaceContext
为前缀和URI绑定设置当前命名空间上下文。此上下文将成为写入的根命名空间上下文,并将替换当前的根命名空间上下文。对setPrefix和setDefaultNamespace的后续调用将使用传递给方法的上下文作为解析命名空间的根上下文。此方法只能在文档开头调用一次。它不会导致命名空间被声明。如果在命名空间上下文中找到命名空间URI到前缀的映射,则将其视为已声明,并且前缀可以被StreamWriter使用。- 参数:
-
context- 用于此写入器的命名空间上下文,不得为null - 抛出:
-
XMLStreamException- 如果发生错误
-
getNamespaceContext
NamespaceContext getNamespaceContext()返回当前命名空间上下文。- 返回:
- 当前的NamespaceContext
-
getProperty
从底层实现获取特性/属性的值- 参数:
-
name- 属性的名称,不得为null - 返回:
- 属性的值
- 抛出:
-
IllegalArgumentException- 如果不支持该属性 -
NullPointerException- 如果名称为null
-