一个简单的任务:写一个元素的两个属性: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