eventReader를 사용하여 StAX 파서에서 문자를 가져 오는 코드가 있습니다. 코드는 다음과 같습니다 : 때때로 asCharacters 인접한 isCharacters 이벤트 사이에 병합되지 않기 때문에가끔 Java 6 CDATA 구문 분석시 eventReader의 StAX 파서 버그
private String getNextCharacters(XMLEventReader eventReader) throws XMLStreamException {
StringBuilder characters = new StringBuilder();
XMLEvent event = eventReader.nextEvent();
String data = event.asCharacters().getData();
characters.append(data);
while (eventReader.peek() != null && eventReader.peek().isCharacters()) {
event = eventReader.nextEvent();
data = event.asCharacters().getData();
characters.append(data);
}
return characters.toString();
}
while 루프입니다. 이것은 설정중인 is_coalescing 플래그와는 별개의 것으로 보입니다. 이것은 합리적인 해결 방법처럼 보였지만 2 차적인 버그를 유발 한 것 같습니다. 때때로 나는]]> 내 문자열에 붙어있다. 이것은 매우 드문 경우입니다 - 5000 줄의 XML에 대해 한 번이지만 일관되게 발생합니다. 디버깅 나는 첫 번째 이벤트가 CDATA 일 때 두 번째 isCharacters 이벤트에서 발생하는 것을 발견했다. 구문 분석기는 두 번째 이벤트에 의해 CDATA 명령을 추적하지 못하는 것 같습니다.
다른 사람이 이걸 보았습니까? 누구든지 단순히 문자열을 끝내는 것보다] 더 나은 해결 방법이 있습니까? 나는 중요한 온라인이나 여기를 찾지 못했습니다. 대신
data = event.asCharacters().getData();
의
감사를 갈 수있다. 그것은 문제를 해결하기 위해 내가 한 일입니다. 나를위한 진짜 문제는 Java 6 표준 라이브러리를 재정의하는 클래스 경로에 매우 오래된 XML 라이브러리가 있다는 것입니다. –
이제 다행입니다. 건배 –