一個簡單的任務:寫一個元素的兩個屬性:XMLOutputStream,修復名稱空間和屬性沒有命名空間
String nsURI = "http://example.com/";
XMLOutputFactory outF = XMLOutputFactory.newFactory();
outF.setProperty(XMLOutputFactory.IS_REPAIRING_NAMESPACES, true);
XMLStreamWriter out = outF.createXMLStreamWriter(System.out);
out.writeStartElement(XMLConstants.DEFAULT_NS_PREFIX, "element", nsURI);
out.writeAttribute("attribute", "value");
out.writeAttribute("attribute2", "value");
out.writeEndElement();
out.close();
Woodstox的回答是:
<element xmlns="http://example.com/" attribute="value" attribute2="value"></element>
JDK 6回答:
<zdef-1905523464:element xmlns="" xmlns:zdef-1905523464="http://example.com/" attribute="value" attribute2="value"></zdef-1905523464:element>
什麼?!
此外,如果我們添加前綴的元素:
out.writeStartElement("ns", "element", nsURI);
JDK 6不再嘗試發出的xmlns = 「」:
<ns:element xmlns:ns="http://example.com/" attribute="value" attribute2="value"></ns:element>
如果我們刪除一個屬性(即,僅有一個)沒關係。
我很確定這是JDK 6中的一個錯誤。我說得對嗎?任何人都可以提出一個解決方案,使圖書館(和其他人)都感到快樂嗎?如果我可以幫忙的話,我不想要求woodstox。
您之前是否得到過損壞的輸出?這並不能解決1.6.0_18中的問題。我剛剛下載的 – user205512 2010-06-18 12:21:10
或1.6.0_20。 – user205512 2010-06-18 12:47:34
是的,我得到使用您的原始代碼 – MarcoS 2010-06-18 12:50:26