2011-07-05 7 views
1

XML 파일의 일부분에 문제가 있습니다. 저는 색소폰과 자바로 파싱하고 있습니다.
텍스트의 모든 부분 (텍스트의 시작 부분, 텍스트의 중간 부분, 텍스트의 끝 부분)을 관리 할 수 ​​없습니다. 당신이 경험에서 무엇을 기대 알고까지색소폰 : 혼합 콘텐츠 텍스트 구문 분석에 문제가 발생했습니다.

<sometag type="aType"> 
    beginning of the text   
    <anothertag type="anotherType" target="aTarget">middle of the text</anothertag> 
    end of the text 
</sometag> 
+1

안녕하세요. 우리를 돕기 위해, 당신은 작동하지 않는 코드를 제공해야 할 것입니다. 그렇지 않으면 우리는 단지 추측하고 있습니다. http://stackoverflow.com/questions/how-to-ask –

답변

1

SAX는 종종 놀라운 일이다.

이벤트 핸들러에 일부 콘솔 로깅을 넣거나 심지어 모든 이벤트를 중단하고 조금씩 테스트를 설정하여 현재보고있는 내용을 확인할 수도 있습니다. 나는 그것이 내가 기대할 수있는 것의 "큰 그림"을 제공하기 때문에 이와 같은 경우에 로깅하는 것을 선호한다.

FWIW, Stax는 성능이 조금 더 쉽고 비슷합니다.

+0

또는 콘솔 로깅 이벤트 처리기로 독립 실행 형 유틸리티를 작성하십시오. 아마 다시 사용하게 될 것입니다. –

2

완전히 직관적이지 않기 때문에 누구나 ContentHandler characters 메서드 구현을 망칠 수 있습니다. 트릭은 단일 요소 텍스트 노드에 대해 characters 메서드를 여러 번 호출 할 수 있으므로 전달 된 단편을 버퍼에 축적해야한다는 것입니다. See the Java tutorial on SAX. 혼합 된 내용의 경우 startElement 및 endElement의 버퍼에서 텍스트를 가져와야합니다.

질문에 답변이되지 않는 경우 몇 가지 코드를 보여주십시오.

+1

또한, 잠시 동안 임베디드 태그가있을 때만 여러 번 전화 할 것이라고 생각하지 마십시오. ** 가끔 ** 여러 이유로 겉으로보기에 여러 전화가 걸릴 것입니다 - 입력시 발생하는 것 같아요. 버퍼 경계. –

관련 문제