XMLStreamWriter.writeStartElement(prefix,localName,namespaceURI):没有前缀绑定到命名空间

时间:2011-07-18 03:15:32

标签: java xml

XMLStreamWriter.writeStartElement(prefix,localName,namespaceURI)doc link

namespaceURI参数不为null,但无法将前缀绑定到namespaceURI:

writeStartElement("manifest","manifest","urn:oasis:names:tc:opendocument:xmlns:manifest:1.0")

结果文件:

<manifest:manifest>

但它应该是:

<manifest:manifest xmlns:manifest="urn:oasis:names:tc:opendocument:xmlns:manifest:1.0">

2 个答案:

答案 0 :(得分:1)

在用于构建流编写器的XMLOutputFactory上将javax.xml.stream.isRepairingNamespaces属性设置为true。默认情况下,它已关闭。

在XMLStreamWriter中编写writeStartElement()的javadoc:

  

抛出:   XMLStreamException - 如果名称空间URI尚未绑定到前缀且javax.xml.stream.isRepairingNamespaces尚未设置为true

(由于某种原因,官方javadocs没有显示例外的详细文本,但是我本地下载的那些文件)

或者你需要显式调用setPrefix()来首先注册命名空间。

答案 1 :(得分:0)

我相信你需要在writeStartElement之前设置setPrefix。我不认为你需要sRepairingNamespaces - 但我不确定。