File io 在解析XML(SAX)之前删除第一个字符

File io 在解析XML(SAX)之前删除第一个字符,file-io,xml-parsing,sax,saxparser,xmlreader,File Io,Xml Parsing,Sax,Saxparser,Xmlreader,我的who xml文件显然是相同的,分别命名为error.xml和good.xml 代码如下: <?xml version="1.0" encoding="utf-16"?> <tag> </tag> 原因是在prolog之前存在一个隐藏字符 我只使用基本的java文件读取器看到了这些字符,我可以看到第一个和第二个字符是-1和-2 '-1''-2'<?xml version>...... '-1'-2'。。。。。

我的who xml文件显然是相同的,分别命名为error.xml和good.xml

代码如下:

    <?xml version="1.0" encoding="utf-16"?>
    <tag>
    </tag>
原因是在prolog之前存在一个隐藏字符

我只使用基本的java文件读取器看到了这些字符,我可以看到第一个和第二个字符是-1和-2

    '-1''-2'<?xml version>......
'-1'-2'。。。。。。
记事本、Ultraedit32、写字板、记事本++等。两者都看不见

我真正的问题是,我需要从FTP自动读取xml,然后我需要在使用xmlReader解析之前删除这些字符,而不解析所有文档,因为有些文档非常大


如何删除文件的第一个字符?

在解析器看到这些字符之前,您必须先删除这些字符,但不需要读取整个文件,然后在删除这些字符后再将其写回

sax解析器可以基于从中读取。此
读取器
接口有许多实现,用于从文件、url或其他数据源进行读取,但您也可以将主
读取器
中的任何内容包装到扩展中,您可以编写该扩展以在数据继续之前执行所需的更改

编写一个
FilterReader
扩展并不困难,它删除了前两个字符,但传递了所有其他字符,这将满足您的需要。如果直到运行时才知道是否需要删除这些字符,但可以通过一种合理的方式检测到,则可以仅在需要时进行。在第一个
之前删除所有字符可能是有意义的
    '-1''-2'<?xml version>......