为什么这段代码会一直触发SaxParseException:""PI不能以xml开头"?

Kur*_*rru 8 xml android saxparseexception

此代码用于从其String表示生成XML文档.它在我的小单元测试中工作正常,但在我的实际xml数据中失败了.它触发的行是Document doc = db.parse(is);

有任何想法吗?

public static Document FromString(String xml)
{
    // from http://www.rgagnon.com/javadetails/java-0573.html
    try
    {
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        DocumentBuilder db = dbf.newDocumentBuilder();
        InputSource is = new InputSource();
        is.setCharacterStream(new StringReader(xml));

        Document doc = db.parse(is);
        doc.normalize();

        return doc;
    }
    catch (Exception e)
    {
        Log.WriteError("Failed to parse XML", e, "XML.FromString(String)");
        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

Kur*_*rru 16

谢谢大家的帮助.

我放弃了<?xml version="1.0" encoding="utf-8"?>清除此错误的内容.仍然不明白这可能是什么原因,但它仍然有效.

我继续发现我的一个缓冲编写器(当从zip文件中提取到内存中时)没有被刷新,这导致xml字符串不完整.

谢谢大家的帮助!

  • 获取字符串到变量后我只使用`xml = xml.replace("<?xml version = \"1.0 \"encoding = \"utf-8 \"?>","");`和错误是走了 (2认同)