首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >xmlpullparser缺少字符

xmlpullparser缺少字符
EN

Stack Overflow用户
提问于 2012-03-01 03:06:23
回答 3查看 1.2K关注 0票数 2

我正在用Android中的XmlPullParser解析一些文件,一切都很顺利,除了文本中的一些特殊字符,比如:

代码语言:javascript
复制
í it should be í
é it should be é

但在我提取的字符串中缺少它们:

代码语言:javascript
复制
camión it should be camión  and I get camin 

对于其他相似的字符也是如此。

我不知道问题到底出在哪里,是在xmlpullparser.getText()上还是在Java String上

我该如何解决这个问题呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-03-24 09:17:23

问题是普通XML没有HTML实体。é没有为XML定义。您要么使用超文本标记语言解析器(如上面的建议),要么自己在XmlPullParser中转换实体。

您的循环必须由nextToken()运行,而不是next();您必须响应XmlPullParser.ENTITY_REF

当然,如果您可以将输入文件更改为直接使用utf-8或iso-8859-1来编码字符,而不是使用HTML实体,那么也可以。

票数 0
EN

Stack Overflow用户

发布于 2012-03-01 16:53:49

我找到了一个解决方案,但它在应用程序大小和性能方面都很昂贵,所以如果有什么问题,或者可以用更好的方法或更少的步骤来完成,请现在就告诉我。

  1. 首先从文件中获取字符串。伪代码:

String content =文件到字符串;

http://snippets.dzone.com/posts/show/1335

将Apache lang3-3.1.jar从 commons导入到您的项目中。为未转义Html字符提供该字符串:

String StringEscapeUtils.unescapeHtml4(content);

  • Feed =将未转义字符串输出到您的XmlPullParser:

xpp.setInput(新输出( StringReader ) );

就是这样。

票数 1
EN

Stack Overflow用户

发布于 2012-03-01 17:36:10

就超文本标记语言不转义而言,someone were using Html.fromHtml似乎是安卓平台内置的。在应用程序大小方面,这可能是一个合适的解决方案;但是,在性能方面,您可能需要做一些性能分析,因为显然Apache Commons unescaping报告要比Android内置替代方案快得多。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9505103

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档