【发布时间】:2012-11-12 00:20:53
【问题描述】:
我在 Android 3.0+ 上没有收到错误,但只有在 Android 2.2、2.3.3 上,当我尝试通过 XmlPullParser 解析一个小的 XML 文件时,应用程序因错误而中断:
org.xmlpull.v1.XmlPullParserException: PI must not start with xml
(position:unknown @1:5 in java.io.InputStreamReader@40568770)
错误中提到的 PI 是什么???
我发现这可能会导致 XML 文件的第一行 (<?xml version="1.0" encoding="utf-8"?>),但我没有找到在较低的 Android 版本上发生这种情况的原因。
如果这是错误的原因(XML 文件的第一行),我该如何解决?
我应该:
a) 要求 Web 服务器的管理员更改 XML?如果是,他应该在 XML 中更改什么?
b) 子字符串InputStream 使用BufferedReader?
不知何故,我认为第二种方法会在弱 Android 手机上造成额外的延迟。
编辑
我从调试器中提取了 XML 内容,发现第一个喜欢以 \r\n 结尾,然后下一个字符开始。这对你有什么影响吗?
这就是 XML 文件的样子。这是一个很小的应用程序崩溃的视觉原因。
<?xml version="1.0" encoding="utf-8"?>
<song>
<artist>Pink Floyd</artist>
<title>Shine On You Crazy Diamond</title>
<picture>http://www.xxyz.com/images/image.jpg</picture>
<time>Fri, 23 Nov 2012 11:22:31 GMT</time>
</song>
这就是从这个 XML 中获取 InputStream 的样子(仅起始字符)。
请指教!!!
【问题讨论】:
-
I found out that this may cause the first line of XML file (<?xml version="1.0" encoding="utf-8"?>)我坚持你会得到这个错误,如果它是 not 在第一行或与你的 XML 在一行中,如果是这样,那么我会联系管理员,如果这不起作用,请尝试正则表达式。'以使其达到应有的方式 -
@Ahmad 这是什么意思“......然后尝试正则表达式。'以使其达到应有的方式”???
-
好的,首先文档到底长什么样?能给个链接吗?
-
@Ahmad 不,我不能。这是一个秘密地点。我将在这里复制 XML。一个包含一个条目的基本小文件。
-
是
<?xml version="1.0" encoding="utf-8"?>第一行还是之前有什么?例如。换行符?
标签: android xml-parsing xmlpullparser