XMLStreamWriter.writeStartElement(prefix,localName,namespaceURI),前缀“manifest”无法解析为名称空间URI

时间:2011-07-18 06:40:55

标签: java xml xml-namespaces

source.xml

<?xml version="1.0" encoding="UTF-8"?>
<zip:archive xmlns:manifest="urn:oasis:names:tc:opendocument:xmlns:manifest:1.0" xmlns:zip="com.test.zip">
<zip:entry zip:target="test1.xml"><manifest:manifest>aaa</manifest:manifest></zip:entry>
<zip:entry zip:target="test2.xml">.......</zip:entry>
</zip:archive>

我使用javax.xml.stream.XMLStreamReader来读取source.xml文件,执行某些操作,然后根据zip:target的属性值写入磁盘。

结果文件test1.xml:

<?xml version="1.0" encoding="UTF-8"?>
<manifest:manifest>aaa</manifest:manifest>

你知道,这是错的。前缀&#34;清单&#34;无法解析为名称空间URI。

通过调试,我发现成功调用了以下语句。

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

writeStartElement的第三个参数不为null。但是为什么结果文件中缺少命名空间?

我尝试了两种方法:

  1. 将sRepairingNamespaces设为true
  2. 在writeStartElement
  3. 之后添加writeNamespace

    但是新的麻烦来了,命名空间被重新声明并重复。

1 个答案:

答案 0 :(得分:0)

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