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>
Знаете, это неправильно. Префикс "манифест" не может быть преобразован в URI пространства имен.
В процессе отладки я обнаружил, что следующий оператор был успешно вызван.
XMLStreamWriter.writeStartElement("manifest", "manifest", "urn:oasis:names:tc:opendocument:xmlns:manifest:1.0");
Третий параметр writeStartElement не является нулевым. Но почему в файле результатов отсутствует пространство имен?
Я пробовал два метода:
- установить sRepairingNamespaces в true
- добавить writeNamespace после writeStartElement
Но приходят новые неприятности, пространства имен были переопределены и дублированы.