Простая задача: написать элемент два атрибута: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. Правильно ли я? И может ли кто-нибудь предложить работу, которая будет поддерживать обе библиотеки (и любые другие) счастливыми? Если я могу помочь, я не хочу требовать древесного покрова.
Вы получили поврежденный выход раньше? Это не проблема для меня в 1.6.0_18. – user205512
Или 1.6.0_20, который я только что скачал. – user205512
да, я получаю сломанный выход, используя ваш исходный код – MarcoS