Простое задание: написать элементу два атрибута:
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. Я прав?И может ли кто-нибудь предложить работу, которая будет радовать обе библиотеки (и любые другие)?Я не хочу требовать Вудстокс, если смогу помочь.