2011-07-18 19 views
2

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を追加しかし、新しいトラブルが来る

  • 真であることが

    1. セットsRepairingNamespacesを、名前空間を再宣言し、重複しました。

    +0

    sRepairingNamespacesをtrueに設定すると、新しい問題が発生し、名前空間が再宣言されて複製されます。 – guhai

    +0

    URIをプレフィックスにバインドするために 'NamespaceContext'の実装を' XMLStreamWrite'rに提供しましたか? –

    答えて

    0

    writeStartElementの前にsetPrefixを設定する必要があると思います。私はあなたがsRepairingNamespacesを必要とするとは思わない - しかし、私はよくわからない。

    +0

    それは動作しません!この質問の特別なことは、XMLファイルをいくつかのXMLファイルに分割し、名前空間がルートノードにあることです。 – guhai

    関連する問題