2
http://stax.codehaus.org/에서 vrsion 1.2.0의 StAX Streaming API를 사용하고 있습니다. 다음 xml을 파일에 쓰려고 할 때 char보다 큰 문자가 이스케이프되지 않습니다. 그러나 탈출에 문제가있는 것보다 덜한 것 같습니다.StAX 초과 이스케이프 처리 (>)
out = new FileOutputStream("foo.xml");
XMLOutputFactory factory = XMLOutputFactory.newInstance();
XMLStreamWriter writer = factory.createXMLStreamWriter(out);
writer.writeStartDocument();
writer.writeStartElement("foo");
writer.writeAttribute("test", "<foo>");
writer.writeEndElement();
writer.writeEndDocument();
writer.flush();
writer.close();
out.close();
출력 (관련 만) 이것이다 :
<foo test="<foo>"
나는 또한 writeCharacters 방법을 사용하려고 한 - 같은 결과. 이것은 버그 또는 의도입니까? 해결 방법이 있습니까? 당신은 탈출하지 필요을하기 때문에합니다 ('&'에
replaceAll(">", ">");
결과가 수동으로> 교체가 자신을 탈출하기.
감사 사전에 어떤 도움을. 기본적으로
[link] (http://docs.oracle.com/cd/E17802_01/webservices/webservices/docs/2.0/tutorial/doc/StAX4)와 같은 출처에 대해서 궁금합니다. HTML) writeCharacters (...) 메서드는 &, <, > 및 "."와 같은 문자를 이스케이프하는 데 사용됩니다. – elyan
@elyan : 정직한 문서 일뿐입니다. 아마 어느 시점에서 * (불필요하게)'>'를 벗어 났지만, 지금은 그렇지 않습니다. –
@elyan : 방금 스펙을 살펴 보았습니다. 이스케이프해야하는 경우가 하나 있습니다. "오른쪽 꺽쇠 괄호 (>)는 문자열"> "을 사용하여 표현 될 수 있으며 호환성을 위해 ">"또는 "[]]>"해당 문자열이 CDATA 섹션의 끝을 표시하지 않을 때 "문자열에 나타날 때 문자 참조를 사용하여 이스케이프 처리해야합니다. –