我正在使用Android中的XmlPullParser解析一些文件 一切都很顺利,除了文本上的一些特殊HTML字符,如下所示:
í it should be í
é it should be é
但在我提取的字符串中缺少它们:
camión it should be camión and I get camin
和其他类似的角色一样。
我不确切地知道问题出在哪里,如果它出现了问题 xmlpullparser.getText()或Java String
我该如何解决这个问题?
答案 0 :(得分:1)
我找到了一个解决方案,但它在应用程序大小和性能方面都很昂贵,所以如果出现问题或者可以采用更好的方式或更少的步骤,请立即让我。
首先从文件中获取一个String。 伪代码:
String content = File to string;
http://snippets.dzone.com/posts/show/1335
从Apache commons将commons-lang3-3.1.jar导入您的项目。为unescape Html字符提供该字符串:
String output = StringEscapeUtils.unescapeHtml4(content);
将未转义的字符串输入您的XmlPullParser:
xpp.setInput( new StringReader (output) );
就是这样。
答案 1 :(得分:0)
就HTML unescaping而言,似乎是someone were using Html.fromHtml
,内置于Android平台。应用程序大小,这可能是一个适当的解决方案;然而,在性能方面你可能需要进行一些分析,因为据报道,Apache Commons unescaping比Android内置替代方案要快得多。
答案 2 :(得分:0)
问题是普通XML没有HTML实体。 &安培; eacute;没有为XML定义。 你要么必须使用HTML解析器(如上面的建议),要么自己在XmlPullParser中翻译实体。
你的循环必须由nextToken()而不是next()运行; 你必须回应XmlPullParser.ENTITY_REF
当然,如果您可以更改输入文件以直接在utf-8或iso-8859-1中对字符进行编码,而不是使用HTML实体,那也可以。