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。但是为什么结果文件中缺少命名空间?
我尝试了两种方法:
但是新的麻烦来了,命名空间被重新声明并重复。
答案 0 :(得分:0)
我相信你需要在writeStartElement之前设置setPrefix。我不认为你需要sRepairingNamespaces - 但我不确定。