-
public interface XMLStreamWriterXMLStreamWriter接口指定如何编写XML。 XMLStreamWriter不对其输入执行良好格式检查。 然而需要对writeCharacters方法逃脱&,<和>属性值的方法writeAttribute会逸出上述字符以及“,以确保所有的字符的内容和属性值是公形成。每个命名空间和属性必须被单独写入。 XML Namespaces,javax.xml.stream.isRepairingNamespacesand write method behaviour MethodisRepairingNamespaces== trueisRepairingNamespaces== false namespaceURI bound namespaceURI unbound namespaceURI bound namespaceURI unboundwriteAttribute(namespaceURI, localName, value)prefix:localName="value" [1] xmlns:{generated}="namespaceURI" {generated}:localName="value" prefix:localName="value" [1]XMLStreamExceptionwriteAttribute(prefix, namespaceURI, localName, value)bound to same prefix:
prefix:localName="value" [1]
bound to different prefix:
xmlns:{generated}="namespaceURI" {generated}:localName="value" xmlns:prefix="namespaceURI" prefix:localName="value" [3] bound to same prefix:
prefix:localName="value" [1][2]
bound to different prefix:
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]XMLStreamExceptionwriteStartElement(prefix, localName, namespaceURI)
writeEmptyElement(prefix, localName, namespaceURI)bound to same prefix:
<prefix:localName>[1]
bound to different prefix:
<{generated}:localName xmlns:{generated}="namespaceURI"><prefix:localName xmlns:prefix="namespaceURI">[4] bound to same prefix:
<prefix:localName>[1]
bound to different prefix:
XMLStreamException<prefix:localName>
笔记:- [1]如果namespaceURI ==默认名称空间URI,则不写入前缀
- [2]如果前缀==“”|| null && namespaceURI ==“”,然后不生成或写入前缀或命名空间声明
- [3]如果前缀==“”|| null,然后随机生成一个前缀
- [4]如果前缀==“”|| null,然后将其视为默认命名空间,并且不生成或写入前缀,如果namespaceURI未绑定,则生成并写入xmlns声明
- [5]如果前缀==“”|| null,然后将其视为无效尝试定义默认名称空间并抛出XMLStreamException
- 从以下版本开始:
- 1.6
- 另请参见:
-
XMLOutputFactory,XMLStreamReader
-
-
方法摘要
所有方法 实例方法 抽象方法 变量和类型 方法 描述 voidclose()关闭此编写器并释放与编写器关联的所有资源。voidflush()将任何缓存数据写入底层输出机制。NamespaceContextgetNamespaceContext()返回当前名称空间上下文。StringgetPrefix(String uri)获取uri绑定的前缀ObjectgetProperty(String name)从底层实现获取功能/属性的值voidsetDefaultNamespace(String uri)将URI绑定到默认命名空间此URI绑定在当前START_ELEMENT / END_ELEMENT对的范围内。voidsetNamespaceContext(NamespaceContext context)设置前缀和uri绑定的当前名称空间上下文。voidsetPrefix(String prefix, String uri)设置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)将默认命名空间写入流voidwriteDTD(String dtd)写一个DTD部分。voidwriteEmptyElement(String localName)将空元素标记写入输出voidwriteEmptyElement(String namespaceURI, String localName)将空元素标记写入输出voidwriteEmptyElement(String prefix, String localName, String namespaceURI)将空元素标记写入输出voidwriteEndDocument()关闭所有开始标记并写入相应的结束标记。voidwriteEndElement()根据writer的内部状态将结束标记写入输出,以确定事件的前缀和本地名称。voidwriteEntityRef(String name)写一个实体引用voidwriteNamespace(String prefix, String namespaceURI)将命名空间写入输出流如果此方法的前缀参数为空字符串“xmlns”或null,则此方法将委托给writeDefaultNamespacevoidwriteProcessingInstruction(String target)写入处理指令voidwriteProcessingInstruction(String target, String data)写入处理指令voidwriteStartDocument()编写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)将开始标记写入输出
-
-
-
方法详细信息
-
writeStartElement
void writeStartElement(String localName) throws XMLStreamException
将开始标记写入输出。 所有writeStartElement方法都在内部命名空间上下文中打开一个新范围。 编写相应的EndElement会导致范围被关闭。- 参数
-
localName- 标记的本地名称,不能为空 - 异常
-
XMLStreamException
-
writeStartElement
void writeStartElement(String namespaceURI, String localName) throws XMLStreamException
将开始标记写入输出- 参数
-
namespaceURI- 要使用的前缀的namespaceURI,可能不为null -
localName- 标记的本地名称,不能为空 - 异常
-
XMLStreamException- 如果名称空间URI尚未绑定到前缀且javax.xml.stream.isRepairingNamespaces尚未设置为true
-
writeStartElement
void writeStartElement(String prefix, String localName, String namespaceURI) throws XMLStreamException
将开始标记写入输出- 参数
-
localName- 标记的本地名称,不能为空 -
prefix- 标记的前缀,不能为空 -
namespaceURI- 要将前缀绑定到的uri,可能不为null - 异常
-
XMLStreamException
-
writeEmptyElement
void writeEmptyElement(String namespaceURI, String localName) throws XMLStreamException
将空元素标记写入输出- 参数
-
namespaceURI- 要将标记绑定到的uri,可能不为null -
localName- 标记的本地名称,不能为空 - 异常
-
XMLStreamException- 如果名称空间URI尚未绑定到前缀且javax.xml.stream.isRepairingNamespaces尚未设置为true
-
writeEmptyElement
void writeEmptyElement(String prefix, String localName, String namespaceURI) throws XMLStreamException
将空元素标记写入输出- 参数
-
prefix- 标记的前缀,不能为null -
localName- 标记的本地名称,不能为空 -
namespaceURI- 要将标记绑定到的uri,可能不为null - 异常
-
XMLStreamException
-
writeEmptyElement
void writeEmptyElement(String localName) throws XMLStreamException
将空元素标记写入输出- 参数
-
localName- 标记的本地名称,不能为空 - 异常
-
XMLStreamException
-
writeEndElement
void writeEndElement() throws XMLStreamException根据writer的内部状态将结束标记写入输出,以确定事件的前缀和本地名称。
-
writeEndDocument
void writeEndDocument() throws XMLStreamException关闭所有开始标记并写入相应的结束标记。
-
close
void close() throws XMLStreamException关闭此编写器并释放与编写器关联的所有资源。 这不能关闭底层输出流。
-
flush
void flush() throws XMLStreamException将任何缓存数据写入底层输出机制。
-
writeAttribute
void writeAttribute(String localName, String value) throws XMLStreamException
将属性写入输出流而不带前缀。- 参数
-
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
void writeAttribute(String namespaceURI, String localName, String value) throws XMLStreamException
将属性写入输出流- 参数
-
namespaceURI- 此属性的前缀的uri -
localName- 属性的本地名称 -
value- 属性的值 - 异常
-
IllegalStateException- 如果当前状态不允许属性写入 -
XMLStreamException- 如果名称空间URI尚未绑定到前缀且javax.xml.stream.isRepairingNamespaces尚未设置为true
-
writeNamespace
void writeNamespace(String prefix, String namespaceURI) throws XMLStreamException
将命名空间写入输出流如果此方法的前缀参数为空字符串“xmlns”或null,则此方法将委托给writeDefaultNamespace- 参数
-
prefix- 将此命名空间绑定到的前缀 -
namespaceURI- 将前缀绑定到的URI - 异常
-
IllegalStateException- 如果当前状态不允许Namespace写入 -
XMLStreamException
-
writeDefaultNamespace
void writeDefaultNamespace(String namespaceURI) throws XMLStreamException
将默认命名空间写入流- 参数
-
namespaceURI- 将默认命名空间绑定到的URI - 异常
-
IllegalStateException- 如果当前状态不允许命名空间写入 -
XMLStreamException
-
writeComment
void writeComment(String data) throws XMLStreamException
用附带的数据写一个xml注释- 参数
-
data- 注释中包含的数据可能为null - 异常
-
XMLStreamException
-
writeProcessingInstruction
void writeProcessingInstruction(String target) throws XMLStreamException
写入处理指令- 参数
-
target- 处理指令的目标,可能不为空 - 异常
-
XMLStreamException
-
writeProcessingInstruction
void writeProcessingInstruction(String target, String data) throws XMLStreamException
写入处理指令- 参数
-
target- 处理指令的目标,可能不为空 -
data- 处理指令中包含的数据不能为空 - 异常
-
XMLStreamException
-
writeCData
void writeCData(String data) throws XMLStreamException
写一个CData部分- 参数
-
data-data部分中包含的数据不能为空 - 异常
-
XMLStreamException
-
writeDTD
void writeDTD(String dtd) throws XMLStreamException
写一个DTD部分。 此字符串表示XML 1.0规范中的整个doctypedecl生成。- 参数
-
dtd- 要写入的DTD - 异常
-
XMLStreamException
-
writeEntityRef
void writeEntityRef(String name) throws XMLStreamException
写一个实体引用- 参数
-
name- 实体的名称 - 异常
-
XMLStreamException
-
writeStartDocument
void writeStartDocument() throws XMLStreamException编写XML声明。 将XML版本默认为1.0,将编码默认为utf-8
-
writeStartDocument
void writeStartDocument(String version) throws XMLStreamException
编写XML声明。 将XML版本默认为1.0- 参数
-
version- xml文档的版本 - 异常
-
XMLStreamException
-
writeStartDocument
void writeStartDocument(String encoding, String version) throws XMLStreamException
编写XML声明。 请注意,encoding参数不会设置基础输出的实际编码。 必须在使用XMLOutputFactory创建XMLStreamWriter实例时设置- 参数
-
encoding- xml声明的编码 -
version- xml文档的版本 - 异常
-
XMLStreamException- 如果给定的编码与基础流的编码不匹配
-
writeCharacters
void writeCharacters(String text) throws XMLStreamException
将文本写入输出- 参数
-
text- 要写入的值 - 异常
-
XMLStreamException
-
writeCharacters
void writeCharacters(char[] text, int start, int len) throws XMLStreamException将文本写入输出- 参数
-
text- 要写入的值 -
start- 数组中的起始位置 -
len- 要写入的字符数 - 异常
-
XMLStreamException
-
getPrefix
String getPrefix(String uri) throws XMLStreamException
获取uri绑定的前缀- 结果
- 前缀或null
- 异常
-
XMLStreamException
-
setPrefix
void setPrefix(String prefix, String uri) throws XMLStreamException
设置uri绑定的前缀。 此前缀绑定在当前START_ELEMENT / END_ELEMENT对的范围内。 如果在写入START_ELEMENT之前调用此方法,则前缀绑定在根范围中。- 参数
-
prefix- 绑定到uri的前缀不能为null -
uri- 要绑定到前缀的URI,可以为null - 异常
-
XMLStreamException
-
setDefaultNamespace
void setDefaultNamespace(String uri) throws XMLStreamException
将URI绑定到默认命名空间此URI绑定在当前START_ELEMENT / END_ELEMENT对的范围内。 如果在写入START_ELEMENT之前调用此方法,则uri绑定在根范围中。- 参数
-
uri- 要绑定到默认命名空间的URI,可能为null - 异常
-
XMLStreamException
-
setNamespaceContext
void setNamespaceContext(NamespaceContext context) throws XMLStreamException
设置前缀和uri绑定的当前名称空间上下文。 此上下文成为写入的根命名空间上下文,并将替换当前的根命名空间上下文。 对setPrefix和setDefaultNamespace的后续调用将使用传递给方法的上下文作为解析名称空间的根上下文来绑定名称空间。 此方法只能在文档开头调用一次。 它不会导致声明名称空间。 如果在命名空间上下文中找到了用于前缀映射的命名空间URI,则将其视为已声明,并且StreamWriter可以使用该前缀。- 参数
-
context- 用于此writer的名称空间上下文,可能不为null - 异常
-
XMLStreamException
-
getNamespaceContext
NamespaceContext getNamespaceContext()
返回当前名称空间上下文。- 结果
- 当前的NamespaceContext
-
getProperty
Object getProperty(String name) throws IllegalArgumentException
从底层实现获取功能/属性的值- 参数
-
name- 属性的名称,不能为null - 结果
- 财产的价值
- 异常
-
IllegalArgumentException- 如果不支持该属性 -
NullPointerException- 如果名称为null
-
-