0

我有谁的 xml 文件显然相同命名为 wrong.xml 和 good.xml。

代码如下:

    <?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>......

Notepad、Ultraedit32、Wordpad、Notepad++等都看不到。

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

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

4

1 回答 1

0

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

sax 解析器可以从InputSource基于 a 的Reader. 这个接口有很多实现,Reader用于从文件、url 或其他数据源中读取数据,但您也可以将任何主要Reader内容包装在FilterReader您编码的扩展中,以便在数据继续之前执行数据所需的更改。

编写一个删除前两个字符但传递其他所有字符的扩展并不难,FilterReader这将满足您的需求。如果直到运行时才知道删除这些字符的需要,但是可以以一种明智的方式检测到,那么可以仅在需要时才这样做。在第一个 .之前删除所有字符可能是有意义的'<'

于 2013-10-21T10:44:37.267 回答