RSS reader 与 BOM 错误

RSS reader vs BOM error

我正在尝试将 RSS Feed/XML 文件读入我的应用程序。问题是有一个我的 inputStream 不喜欢的 BOM(字节顺序标记),它抛出一个错误,这个错误又抛出另一个错误,然后一切都死了。

方法如下:

private Document getDomFromXMLString(String xml) {
    Document doc = null;
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    try {
        DocumentBuilder db = dbf.newDocumentBuilder();
        InputSource is = new InputSource();
        is.setCharacterStream(new StringReader(xml));
        doc = db.parse(is);
    } catch (Exception e) {
        e.printStackTrace();
    }
    return doc;
}

所以我想弄清楚如何有效地跳过 BOM 并输入文件的其余部分

如果您有一个字符流,并且 String 是,那么跳过 BOM 就像剥离第一个字符一样简单,is the BOM:

if (xml.charAt(0) == '\ufeff')
    xml = xml.substring(1);

不过,您真正应该做的是要求源修复其提要; BOM 一开始就不应该存在。