2013-10-11 60 views
0

我有那些名爲wrong.xml和good.xml的xml文件明顯相同。在解析XML(SAX)之前刪除第一個字符

的代碼是如下:

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

的問題是,XmlReader類(org.xml.sax.XMLReader中)解析wrong.xml當檢測到跟隨誤差。

Content is not allowed in prolog 

原因是prolog之前存在隱藏字符。

我只能看到這些字符使用基本的Java文件閱讀器,我可以看到第一個和第二個字符是-1和-2。

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

記事本,Ultraedit32,寫字板,記事本++等都不能看到它們。

我真正的問題是,我需要從FTP自動讀取xml,然後我需要用任何方式刪除這些字符,然後用xmlReader解析,而不用解析所有文檔,因爲一些文檔非常大。

如何刪除文件的第一個字符?

回答

0

您必須在解析器看到它們之前刪除這些字符,但不需要讀取整個文件,並在刪除這些字符時再次將其寫回。

薩克斯解析器可以基於ReaderInputSource讀取。這個Reader接口的許多實現用於從文件,網址或其他數據源中讀取數據,但是您也可以將您的主要Reader所在的FilterReader擴展名編碼爲數據,以便在數據繼續執行之前執行所需的更改。

不難編寫的FilterReader那滴前兩個字符,但傳中一切的延伸,而且會做正是你需要的。如果需要刪除這些字符直到運行時才知道,但可以通過合理的方式檢測到,這可以僅在需要時才能執行。在第一個'<'之前刪除所有字符可能是有意義的。