我正在用Android中的XmlPullParser解析一些文件,一切都很顺利,除了文本中的一些特殊字符,比如:
í it should be í
é it should be é但在我提取的字符串中缺少它们:
camión it should be camión and I get camin 对于其他相似的字符也是如此。
我不知道问题到底出在哪里,是在xmlpullparser.getText()上还是在Java String上
我该如何解决这个问题呢?
发布于 2012-03-24 09:17:23
问题是普通XML没有HTML实体。é没有为XML定义。您要么使用超文本标记语言解析器(如上面的建议),要么自己在XmlPullParser中转换实体。
您的循环必须由nextToken()运行,而不是next();您必须响应XmlPullParser.ENTITY_REF
当然,如果您可以将输入文件更改为直接使用utf-8或iso-8859-1来编码字符,而不是使用HTML实体,那么也可以。
发布于 2012-03-01 16:53:49
我找到了一个解决方案,但它在应用程序大小和性能方面都很昂贵,所以如果有什么问题,或者可以用更好的方法或更少的步骤来完成,请现在就告诉我。
String content =文件到字符串;
http://snippets.dzone.com/posts/show/1335
将Apache lang3-3.1.jar从 commons导入到您的项目中。为未转义Html字符提供该字符串:
String StringEscapeUtils.unescapeHtml4(content);
xpp.setInput(新输出( StringReader ) );
就是这样。
发布于 2012-03-01 17:36:10
就超文本标记语言不转义而言,someone were using Html.fromHtml似乎是安卓平台内置的。在应用程序大小方面,这可能是一个合适的解决方案;但是,在性能方面,您可能需要做一些性能分析,因为显然Apache Commons unescaping报告要比Android内置替代方案快得多。
https://stackoverflow.com/questions/9505103
复制相似问题