xmlpullparser缺少字符

时间:2012-02-29 19:06:23

标签: android html xml xmlpullparser

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

í it should be í
é it should be é

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

camión it should be camión  and I get camin 

和其他类似的角色一样。

我不确切地知道问题出在哪里,如果它出现了问题 xmlpullparser.getText()或Java String

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:1)

我找到了一个解决方案,但它在应用程序大小和性能方面都很昂贵,所以如果出现问题或者可以采用更好的方式或更少的步骤,请立即让我。

  1. 首先从文件中获取一个String。 伪代码:

     String content = File to string;
    
  2. http://snippets.dzone.com/posts/show/1335

    1. 从Apache commons将commons-lang3-3.1.jar导入您的项目。为unescape Html字符提供该字符串:

       String output =   StringEscapeUtils.unescapeHtml4(content);
      
    2. 将未转义的字符串输入您的XmlPullParser:

      xpp.setInput( new StringReader (output) );
      
    3. 就是这样。

答案 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实体,那也可以。