在Android中解析HTML

时间:2010-09-02 08:33:26

标签: java html android

我正在尝试解析特定数据的HTML,但是我遇到了返回字符的问题,至少我认为这就是问题所在。我正在使用一个简单的子字符串方法来拆分HTML,因为我事先知道我在寻找什么。

这是我的解析方法:

public static void parse(String response, String[] hashItem, String[][] startEnd) throws Exception
{

    for (i = 0; i < hashItem.length; i++)
    {
        part = response.substring(response.indexOf(startEnd[i][0]) + startEnd[i][0].length());
        value = part.substring(0, part.indexOf(startEnd[i][1]));
        DATABASE.setHash(hashItem[i], value);
    }
}

以下是给我提出问题的HTML示例

<table cellspacing=0 cellpadding=2 class=smallfont>
<tr onclick="lu();" onmouseover="style.cursor='hand'">
<td class=bodybox nowrap>&nbsp;     21,773,177,147 $&nbsp;</td><td></td>
<td class=bodybox nowrap>&nbsp;        629,991,926 F&nbsp;</td><td></td>
<td class=bodybox nowrap>&nbsp;             24,537 P&nbsp;</td><td></td>
<td class=bodybox nowrap>&nbsp;                  0 T&nbsp;</td>
<td></td><td class=bodybox nowrap>&nbsp;RT&nbsp;</td>

有隐藏的返回字符,但是当我尝试将它们添加到我尝试使用的字符串中时,它就不会很好,如果有的话。是否有一种方法或者更好的方法从HTML中删除隐藏的字符以使其更容易解析?任何帮助都会一如既往地受到高度赞赏。

4 个答案:

答案 0 :(得分:8)

如果您想轻松解析,请尝试Jsoup

此示例将下载页面,解析并获取文本。

Document doc = Jsoup.connect("http://jsoup.org").get();

Elements tds = doc.select("td.bodybox");

for (Element td : tds) {
  String tdText = td.text();
}

答案 1 :(得分:1)

您可以尝试使用Android中提供的XMLPullParser。您可以使用StringBuffer在代码之间追加字符。

答案 2 :(得分:0)

尝试使用正则表达式获取所需信息: http://java.sun.com/developer/technicalArticles/releases/1.4regex/

您甚至可以使用它删除隐藏的字符。或者使用String.Replace删除换行符?

答案 3 :(得分:0)

您可以使用XMLReader解析HTML文件,例如据我所知,查看本文http://www.ibm.com/developerworks/xml/library/x-andbene1/