模块  java.xml
软件包  javax.xml.stream

Interface XMLStreamWriter


  • public interface XMLStreamWriter
    XMLStreamWriter接口指定如何编写XML。 XMLStreamWriter不对其输入执行良好格式检查。 然而需要对writeCharacters方法逃脱&,<和>属性值的方法writeAttribute会逸出上述字符以及“,以确保所有的字符的内容和属性值是公形成。每个命名空间和属性必须被单独写入。 XML Namespaces, javax.xml.stream.isRepairingNamespaces and write method behaviour Method isRepairingNamespaces == true isRepairingNamespaces == false namespaceURI bound namespaceURI unbound namespaceURI bound namespaceURI unbound writeAttribute(namespaceURI, localName, value) prefix:localName="value" [1] xmlns:{generated}="namespaceURI" {generated}:localName="value" prefix:localName="value" [1] XMLStreamException writeAttribute(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] XMLStreamException writeStartElement(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
    另请参见:
    XMLOutputFactoryXMLStreamReader
    • 方法详细信息

      • 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
      • writeEndElement

        void writeEndElement()
                      throws XMLStreamException
        根据writer的内部状态将结束标记写入输出,以确定事件的前缀和本地名称。
        异常
        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
      • writeProcessingInstruction

        void writeProcessingInstruction​(String target,
                                        String data)
                                 throws XMLStreamException
        写入处理指令
        参数
        target - 处理指令的目标,可能不为空
        data - 处理指令中包含的数据不能为空
        异常
        XMLStreamException
      • writeStartDocument

        void writeStartDocument​(String encoding,
                                String version)
                         throws XMLStreamException
        编写XML声明。 请注意,encoding参数不会设置基础输出的实际编码。 必须在使用XMLOutputFactory创建XMLStreamWriter实例时设置
        参数
        encoding - xml声明的编码
        version - xml文档的版本
        异常
        XMLStreamException - 如果给定的编码与基础流的编码不匹配
      • writeCharacters

        void writeCharacters​(char[] text,
                             int start,
                             int len)
                      throws XMLStreamException
        将文本写入输出
        参数
        text - 要写入的值
        start - 数组中的起始位置
        len - 要写入的字符数
        异常
        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