StAX 및 XMLStreamReader를 사용하여 XML 파일을 읽는 동안 이상한 문제가 발생했습니다. 그것의 오류 또는 내가 뭔가 잘못하고 있는지 확실하지 않습니다. StAX 배우기. StAX에서 XML 노드 텍스트 가져 오기 XMLStreamConstants.CHARACTERS 이벤트
그래서 문제가
,XMLStreamConstants.CHARACTERS
이벤트에서
- , 나는
XMLStreamReader.getText()
방법으로 노드 텍스트를 수집 할 때. - 노드 텍스트에 &, <, 또는 심지어 예를 들어 숨겨진 내용이있는 경우 텍스트 문자열의 첫 번째 부분 만 반환합니다. 예 :
ABC & XYZ
만 반환ABC
간체 자바 출처 :
// Start StaX reader
XMLInputFactory xmlInputFactory = XMLInputFactory.newInstance();
try {
XMLStreamReader xmlStreamReader = xmlInputFactory.createXMLStreamReader(inStream);
int event = xmlStreamReader.getEventType();
while (true) {
switch (event) {
case XMLStreamConstants.START_ELEMENT:
switch (xmlStreamReader.getLocalName()) {
case "group":
// Do something
break;
case "source":
isSource = true;
break;
case "target":
isTarget = true;
break;
default:
isSource = false;
isTrans = false;
break;
}
break;
case XMLStreamConstants.CHARACTERS:
if (srcData != null) {
String srcTrns = xmlStreamReader.getText();
if (srcTrns != null) {
if (isSource) {
// Set source text
isSource = false;
} else if (isTrans) {
// Set target text
isTrans = false;
}
}
}
break;
case XMLStreamConstants.END_ELEMENT:
if (xmlStreamReader.getLocalName().equals("group")) {
// Add to return list
}
break;
}
if (!xmlStreamReader.hasNext()) {
break;
}
event = xmlStreamReader.next();
}
} catch (XMLStreamException ex) {
LOG.log(Level.WARNING, ex.getMessage(), MessageFormat.format("{0} {1}", ex.getCause(), ex.getLocation()));
}
내가 정확히 내가 잘못하고 또는 어떻게 노드의 전체 텍스트를 수집하고 무엇을 아주 확실하지 않다.
StAX를 더 배우기위한 제안이나 요령이 있으면 도움이 될 것입니다. :-)
코드와 스택 트레이스를 주시겠습니까? – Prabhaker
@Prabhaker Yeap, 방금 내 코드의 단순화 된 버전을 추가 했으므로 완전한 코드를로드 할 수 없습니다. 감사. – Indigo
죄송합니다 사과드립니다. 오류가 아니며 노드에서 전체 텍스트를 수집하는 데 문제가있었습니다. – Indigo