간단한 작업 : 요소 두 속성을 쓰기 :네임 스페이스를 수리 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
또는 방금 다운로드 한 1.6.0_20. – user205512
예, 원래 코드 – MarcoS