2013-10-11 1 views
0

xml 파일의 이름이 wrong.xml과 good.xml 인 사람이 분명히 있습니다.XML (SAX)을 구문 분석하기 전에 첫 번째 문자를 삭제하십시오.

<?xml version="1.0" encoding="utf-16"?> 
    <tag> 
    </tag> 

문제는 wrong.xml을 구문 분석 할 때의 XMLReader 클래스 (org.xml.sax.XMLReader)는 다음과 오류를 감지한다는 것입니다 :

코드는 다음과입니다.

Content is not allowed in prolog 

이유는 프롤로그 앞에 숨겨진 문자가 있기 때문입니다.

나는이 문자들을 기본 자바 파일 판독기를 사용해서 만 보았고 첫 번째 문자와 두 번째 문자가 -1과 -2라는 것을 알 수 있었다.

'-1''-2'<?xml version>...... 

메모장이나 UltraEdit32, 워드 패드, 메모장 ++ 등 어느 쪽을 볼 수 있습니다.

내 진짜 문제는 FTP에서 자동으로 XML을 읽어야한다는 것입니다. 그런 다음 일부 문서가 크기가 커서 모든 문서를 구문 분석하지 않고 xmlReader로 구문 분석하기 전에 이러한 문자를 삭제할 방법이 필요합니다.

파일의 첫 번째 문자는 어떻게 삭제합니까?

답변

0

파서가 인식하기 전에 해당 문자를 제거해야하지만, 전체 파일을 읽고 다시 제거한 문자로 다시 작성하지 않아도됩니다.

sax 파서는 Reader을 기반으로 InputSource에서 읽을 수 있습니다. 파일, URL 또는 다른 데이터 소스에서 읽는 데이 Reader 인터페이스의 많은 구현이 있지만 기본 코드가 FilterReader 인 모든 내용을 포장하기 전에 데이터에 필요한 변경 작업을 수행하도록 코드를 작성해야합니다.

FilterReader의 확장명을 코딩하는 것은 어렵지 않지만 처음 두자를 삭제하지만 다른 모든 것을 전달하므로 필요한만큼 처리 할 수 ​​있습니다. 이러한 문자를 삭제해야 할 필요가 런타임까지 알려지지 않았지만 현명한 방법으로 감지 될 수있는 경우 필요한 경우에만 수행 할 수 있습니다. 첫 번째 문자 앞에 문자를 버리는 것이 좋습니다. '<'.

관련 문제