XMLStreamWriter.writeStartElement (префикс, localName, namespaceURI), префикс «манифест» не может быть разрешен в URI пространства имен - PullRequest
2 голосов
/ 18 июля 2011

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 не является нулевым. Но почему в файле результатов отсутствует пространство имен?

Я пробовал два метода:

  1. установить sRepairingNamespaces в true
  2. добавить writeNamespace после writeStartElement

Но приходят новые неприятности, пространства имен были переопределены и дублированы.

1 Ответ

0 голосов
/ 19 июля 2011

Я считаю, что вам нужно установить Prefix перед writeStartElement. Я не думаю, что вам понадобятся sRepairingNamespaces - но я не уверен.

...