一个简单的任务:编写一个元素的两个属性:
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();
伍德斯托克斯的回答:
<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。