source.xml
:XMLStreamWriter.writeStartElement(前綴的localName,則namespaceURI),前綴 「清單」 不能被解析爲命名空間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>
我用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的第三個參數不爲null。但爲什麼結果文件中缺少命名空間?
我嘗試了兩種方法:
- 集sRepairingNamespaces是真實
- 添加和writeNamespace writeStartElement
但新的麻煩來了之後,命名空間進行了重新聲明和複製。
如果將sRepairingNamespaces設置爲true,則會出現新的問題,名稱空間被重新聲明並重復。 – guhai
您是否向'XMLStreamWrite'r提供了'NamespaceContext'的實現來將URI綁定到前綴? –