2012-02-29 58 views
1

我解析与XmlPullParser一些文件中的Android 一切顺利,除了上的文字是这样一些特殊的HTML字符精细缺少字符:与xmlpullparser

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

和其他类似的字符一样。

我不知道到底是哪里的问题,如果它是在 xmlpullparser.getText()或Java的String

我怎样才能解决这个问题?

+0

这似乎与字符编码有关。你能确认你使用的是什么编码吗? – kosa 2012-02-29 19:11:05

+0

我使用UTF-8它应该是其他任何东西,因为UTF-8是xmlpullparser的默认字符编码 – butelo 2012-02-29 19:22:25

+0

看看这个链接是否有助于http:// stackoverflow。com/questions/5976375/xmlpullparser-on-special-characters它似乎ISO-8859-1为这个人工作,但不确定。试一下。 – kosa 2012-02-29 19:26:34

回答

0

问题是普通的XML没有HTML实体。 & eacute;没有为XML定义。 您必须使用HTML解析器(如上面的建议),否则自己在XmlPullParser中翻译实体。

你的循环将必须由的nextToken(),而不是下一个()运行; 你将不得不到XmlPullParser.ENTITY_REF

当然如果回应你可以改变你的输入文件的字符直接在UTF-8或ISO-8859-1,而不是使用HTML实体编码,将工作过。

1

我发现了一个解决方案,但它在应用程序的大小和性能方面是昂贵的,所以请让我现在如果出现问题或者可以做一个更好的方法或更少的步骤。

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

    String content = File to string; 
    

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

  1. 进口的commons-lang3-3.1.jar从Apache的公共项目。订阅该字符串UNESCAPE HTML字符:

    String output = StringEscapeUtils.unescapeHtml4(content); 
    
  2. 饲料是转义字符串您XmlPullParser:

    xpp.setInput(new StringReader (output)); 
    

就是这样。

0

至于HTML转义而言,似乎someone were using Html.fromHtml,附带内置了Android平台。应用程序尺寸方面,这可能是一个适当的解决方案;然而,性能方面您可能需要做一些分析,因为据报道,Apache Commons的无用消息被报道比Android内置的选择速度快得多。

+0

我试过了,并没有工作。也许我可以从apache库中删除不需要的方法并使其更细化 – butelo 2012-03-01 10:20:59