2009-06-25 6 views
0

Java에서 DOM Parser를 사용하여 작은 XML 파일을 구문 분석하려고합니다. uri에서 그물을 제거하지만 세미콜론이 누락되었다는 오류 메시지가 나타납니다. 분명히 실종 세미콜론있다org.xml.sax.SAXParseException : 문자 참조가 ';'로 끝나야합니다. 구분 기호. 해결 방법이 필요합니다

[Fatal Error] A01.xml:6:53: The character reference must end with the ';' delimiter. 
Exception in thread "main" org.xml.sax.SAXParseException: The character reference must end with the ';' delimiter. 
    at org.apache.xerces.parsers.DOMParser.parse(Unknown Source) 
    at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source) 
    at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:180) 
    at Parser.Parse(Parser.java:108) 
    at Parser.main(Parser.java:185) 

<title>Reduction Algorithm using the &#192 TROUS Wavelet Transform.</title> 

XML

이 줄을 구문 분석 :

Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse("url_to_the_xml_file.xml"); 

여기 오류입니다 :

여기 링크 (108)입니다. 누구든지이 문제에 대해 멋지고 깔끔한 해결 방법을 알고 있습니까?

답변

1

바이트 배열/문자열로 XML을 별도로 검색하고 구문 분석기로 보내기 전에 조작 된 엔터티에 대해 정규식 바꾸기를 수행합니다.

저는 정규 표현식 전문가가 아니지만 & # \ d {1,4} [^;]을 (를) 검색하면 트릭의 절반을 수행 할 수 있습니다.

당신은이 개체의 형식이 잘못 한 경우 수 만 String.replaceAll("&#192", "&#192;");

+0

는 [0-9] 대신 \ D – Duncan

0

그보다 XML 문법에 더 많은 문제가있는 경우,보다 포괄적 인 솔루션이 사용하는 HTMLTidy 또는 정리하는 자바 포트, JTidy의 마크 업을 파서에 공급하기 전에 그것은 원래 HTML/XHTML을 위해 설계되었지만 올바른 설정이 주어지면 임의의 XML을 정리할 수 있다고 확신합니다.

1

사용 자바

"?default=sample&amp;page=homePage"