Module java.xml
Package javax.xml.stream

Interface XMLStreamWriter


public interface XMLStreamWriter
XMLStreamWriter接口指定了如何编写XML。XMLStreamWriter不会对其输入执行格式检查。但是,writeCharacters方法需要转义&、<和>。对于属性值,writeAttribute方法将转义上述字符以及",以确保所有字符内容和属性值都是格式良好的。每个NAMESPACE和ATTRIBUTE必须单独编写。
XML命名空间,javax.xml.stream.isRepairingNamespaces和写入方法的行为
方法 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 Details

    • writeStartElement

      void writeStartElement(String localName) throws XMLStreamException
      向输出写入开始标记。所有writeStartElement方法在内部命名空间上下文中打开一个新范围。写入相应的EndElement会导致范围关闭。
      参数:
      localName - 标签的本地名称,不得为null
      抛出:
      XMLStreamException - 如果发生错误
    • writeStartElement

      void writeStartElement(String namespaceURI, String localName) throws XMLStreamException
      向输出写入开始标记
      参数:
      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

      void writeEmptyElement(String namespaceURI, String localName) throws XMLStreamException
      向输出写入空元素标记
      参数:
      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

      void writeEmptyElement(String localName) throws XMLStreamException
      向输出写入空元素标记
      参数:
      localName - 标签的本地名称,不得为null
      抛出:
      XMLStreamException - 如果发生错误
    • writeEndElement

      void writeEndElement() throws XMLStreamException
      根据写入器的内部状态确定事件的前缀和本地名称,将结束标记写入输出。
      抛出:
      XMLStreamException - 如果发生错误
    • writeEndDocument

      void writeEndDocument() throws XMLStreamException
      关闭任何开始标记并写入相应的结束标记。
      抛出:
      XMLStreamException - 如果发生错误
    • close

      void close() throws XMLStreamException
      关闭此写入器并释放与写入器关联的任何资源。这不得关闭底层输出流。
      抛出:
      XMLStreamException - 如果发生错误
    • flush

      void flush() throws XMLStreamException
      将任何缓存的数据写入底层输出机制。
      抛出:
      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 - 如果当前状态不允许写入命名空间
      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 - 处理指令的目标,不得为null
      抛出:
      XMLStreamException - 如果发生错误
    • writeProcessingInstruction

      void writeProcessingInstruction(String target, String data) throws XMLStreamException
      写入处理指令
      参数:
      target - 处理指令的目标,不得为null
      data - 处理指令中包含的数据,不得为null
      抛出:
      XMLStreamException - 如果发生错误
    • writeCData

      void writeCData(String data) throws XMLStreamException
      写入CData部分
      参数:
      data - CData部分中包含的数据,不得为null
      抛出:
      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
      抛出:
      XMLStreamException - 如果发生错误
    • writeStartDocument

      void writeStartDocument(String version) throws XMLStreamException
      写入XML声明。将XML版本默认设置为1.0
      参数:
      version - XML文档的版本
      抛出:
      XMLStreamException - 如果发生错误
    • writeStartDocument

      void writeStartDocument(String encoding, String version) throws XMLStreamException
      写入XML声明。请注意,编码参数不设置底层输出的实际编码。必须在使用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绑定的前缀。
      参数:
      uri - 前缀绑定的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 - 用于此写入器的命名空间上下文,不得为null
      抛出:
      XMLStreamException - 如果发生错误
    • getNamespaceContext

      NamespaceContext getNamespaceContext()
      返回当前命名空间上下文。
      返回:
      当前的NamespaceContext
    • getProperty

      Object getProperty(String name) throws IllegalArgumentException
      从底层实现获取特性/属性的值
      参数:
      name - 属性的名称,不得为null
      返回:
      属性的值
      抛出:
      IllegalArgumentException - 如果不支持该属性
      NullPointerException - 如果名称为null