source.xml
を名前空間に解決できない「マニフェスト」:XMLStreamWriter.writeStartElement(接頭辞、ローカル名、名前空間URI)、プレフィックスがURI
<?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>
私は、source.xml
ファイルを読み、いくつかのアクションを行い、その後に書き込みをjavax.xml.stream.XMLStreamReader
を使用ディスクの属性値は、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の3番目のパラメータがnullではありません。しかし、結果ファイルに名前空間がないのはなぜですか?私は2つの方法を試みた
:writeStartElement後
をwriteNamespaceを追加しかし、新しいトラブルが来る
- セットsRepairingNamespacesを、名前空間を再宣言し、重複しました。
sRepairingNamespacesをtrueに設定すると、新しい問題が発生し、名前空間が再宣言されて複製されます。 – guhai
URIをプレフィックスにバインドするために 'NamespaceContext'の実装を' XMLStreamWrite'rに提供しましたか? –