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 一开始就不应该存在。
我正在尝试将 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 一开始就不应该存在。