Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/197.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 为什么这段代码会不断触发SaxParseException:"&引用;PI不能以xml开头;?_Android_Xml_Saxparseexception - Fatal编程技术网

Android 为什么这段代码会不断触发SaxParseException:"&引用;PI不能以xml开头;?

Android 为什么这段代码会不断触发SaxParseException:"&引用;PI不能以xml开头;?,android,xml,saxparseexception,Android,Xml,Saxparseexception,此代码用于从XML文档的字符串表示形式生成XML文档。它在我的小型单元测试中运行良好,但在实际的xml数据中失败。它触发的行是documentdoc=db.parse(is) 有什么想法吗 public static Document FromString(String xml) { // from http://www.rgagnon.com/javadetails/java-0573.html try { DocumentBuilderFactory

此代码用于从XML文档的字符串表示形式生成XML文档。它在我的小型单元测试中运行良好,但在实际的xml数据中失败。它触发的行是
documentdoc=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;
    }
}

谢谢大家的帮助

我丢弃了清除此错误的
。我仍然不明白这可能是什么原因,但它仍然有效

我接着发现我的一个缓冲写入程序(从zip文件提取到内存中时)没有被刷新,这导致xml字符串不完整


谢谢大家的帮助

您可以检查您的xml文件是否有BOM头

我在解析PHP生成的xml时遇到了相同的问题。
在我添加ContentType标题“text/xml”后,它就像一个符咒一样工作。

您应该检查文件的编码,而不是丢弃xml行


我发现我的Eclipse(在Windows上)与编码为Unix-U8的资源存在相同的问题。将其转换为DOS-U8后,错误消失。

正如@StaxMan所说的,在转换之前删除任何未知字符
responseBody=responseBody.substring(responseBody.indexOf(“此问题也将由行与xml数据在同一行中引起

0Portadahttp://iphone.elnorte.com/libre/online07/a


它可能不是您的代码,而是“XML”“您正在加载并试图解析的字符串。如果它不是XML,则当遇到诸如未关闭的元素、无效字符等情况时,它将引发解析异常。异常说明了什么?您是否针对外部源测试了XML以确保其有效?在异常中发现以下消息:“PI不能以xml开头(位置:未知xm@1:5在java.io中。StringReader@4625d540) 我不确定这意味着什么,因为我很确定第一个字符的开头通常是这样的,如果在XML声明之前有额外的空格,则不允许这样做;如果有XML声明,则它必须在没有任何前导空格的情况下开始。另一方面,处理指令(PI)的目标名称不允许为“XML”,因此出现错误消息。如果您使用错误的编码从流中读取字符串,您也可以得到此消息。嗨,Kurru,您是如何讨论声明的?您使用了转换器或子字符串还是什么?我已经为此挣扎了一段时间…有几种方法可以做到这一点,我想因为我可以依赖格式,所以我刚刚扔掉了代码的第1行。您也可以尝试根据第1个>symbolThanks对其进行子字符串。对于回答,我最终使用了子字符串方法。@CrimsonChin请随意向上投票我的答案作为奖励:P向上投票的评论恐怕不会得到rep!将字符串添加到变量后,我刚刚使用了
xml=xml.replace(“,”);
然后错误就消失了