2010-04-14 2 views
2

구문 분석을 시도하는 XML im은 CDATA 내의 제어 문자 0x2를 포함합니다. 가 org.xml.sax.SAXParseException : 컨텐츠가에서 허용되지 않습니다 내가 말하는 오류 메시지를 구문 분석하려고하면 지금문자 참조를 포함하는 XML 구문 분석

CDATA section----charcter reference----CDATA section 

: 나는처럼 보이는 CDATA을 주도 문자 참조로 대체하려고 프롤로그. 나는 그것을 수정

<?xml version="1.1" encoding="UTF-16"?><CELL><![CDATA[ABCD&#2;EFGH]]></CELL> 

: 원래 예제는 작동하지 않는 이유

<?xml version="1.1" encoding="UTF-16"?><CELL><![CDATA[ABCD]]>&#2;<![CDATA[EFGH]]></CELL> 
+0

질문을 편집하여 요청한 실제 XML을 게시하십시오. 이 작업을 수행 할 때 XML을 선택하고 텍스트 입력 영역 위에있는 1010 버튼을 누릅니다. –

답변

0

엔티티 정의는 CDATA 섹션에서 해결되지 않은, 즉 같은

원래 XML을 보였다. 수정 된 예제가 작동하지 않는다는 것은 제 의견으로는 SAX 파서 오류 인 것 같습니다. 어쩌면 SAX 파서가 <?으로 시작하는 XML 프롤로그 앞에 보이지 않는 바이트 순서 표시 (BOM)를 허용하지 않지만 SAX 파서가 있어야합니다.

SAX 파서를 돕기 위해 다음과 같은 해결 방법을 사용하십시오. 즉 파서를 먹이기 전에 BOM을 소비합니다. 이 목적으로 마크 업 가능한 스트림을 사용할 수 있습니다. 즉, 스트림을 표시하고, BOM을 읽으며, BOM이 없으면 스트림을 마크로 재설정합니다. 나는 그저 추측하지 않으려 고 노력했다.

BTW : 소개에서 오타를 수정하면 더 잘 이해할 수 있습니다. "charcter reference"대신 "character reference"를 씁니다. 나는 처음에 누락 된 것이 귀하의 질문과 관련이 있다고 생각했습니다.

+0

참고 : http://lachy.id.au/log/2006/09/xml-prolog –