ë上的XML解析错误

时间:2012-02-07 15:34:27

标签: android xml sax

我在xml文件中崩溃了。它发生在ë上,在这种情况下是belgië(比利时的荷兰人)。

我正忙着寻找答案,但我找不到解决方案。有人有一个好主意吗?

我在Android下使用sax解析器。 错误:org.apache.harmony.xml.ExpatParser $ ParseException:在第2行,第204列:格式不正确 xml来源:http://biohorma.weatheronyoursite.com/villadm_hooikoortsverwachting_be.xml

感谢您提供帮助

旁注,我通过流获取数据,是将此流设置为临时值,用有效字符替换非法字符并创建新流的唯一选项,或者您可以在流中添加内容这样做?

4 个答案:

答案 0 :(得分:4)

似乎您应该使用String (byte[] bytes, String enc)构造函数,假设服务器发送给您的是UTF-8编码:

String properXml = new String(byteArrayIReceivedFromServer, "UTF-8");

答案 1 :(得分:2)

问题不在于解析器 - 它的行为是正确的 - 但是无论发送XML的代码是什么。需要对ë进行编码并将其作为ë传递。对于其他重音字符,&符号和尖括号也必须这样做。

答案 2 :(得分:1)

你应该替换xml中的特殊字符我认为..

在此处查看完整的字符列表:http://www.w3schools.com/tags/ref_entities.asp

它说你的变音符号就像:Ë Ë Ë capital e, umlaut mark

如果您想阅读,那么a brief explanation也是如此。

希望它有所帮助。

答案 3 :(得分:0)

服务器发送以下标题:

Content-Type: text/xml
Content-Length: 124512

由于没有为内容类型指定字符集,因此通常正确的假设是US_ASCII。但是,XML有效负载似乎在ISO-8859-1

中编码
<?xml version="1.0" encoding="iso-8859-1"?>

和'ë'编码为0xEB(235)。服务器在ISO-8859-1中对文本有效负载进行编码是很常见的,所以这是人们必须处理的事情。

我的猜测是,如果您直接使用字节流为解析器提供服务,它将相应地检测编码。如果使用字符流(不推荐),请确保指定正确的编码。