如何在android中从html响应表中检索多列数据

如何在android中从html响应表中检索多列数据,android,Android,大家好,我是android应用程序的新手,我使用POST方法和 获取了logcat中显示的html响应页面。html响应页面包含一个表,我需要从中检索1,4,5,7列数据,并将每列数据存储在一个数组中。 下面是表格数据的html源代码。请有人提供我的样本代码,所以 我可以检索列数据并显示在列表中。感谢您的回复 这是值得赞赏的 < html>< head> < meta http-equiv="Content-Type" content="text/html;

大家好,我是android应用程序的新手,我使用POST方法和 获取了logcat中显示的html响应页面。html响应页面包含一个表,我需要从中检索1,4,5,7列数据,并将每列数据存储在一个数组中。 下面是表格数据的html源代码。请有人提供我的样本代码,所以 我可以检索列数据并显示在列表中。感谢您的回复 这是值得赞赏的

< html>< head>
    < meta http-equiv="Content-Type" content="text/html; charset=UTF-8"
< /head>
< body>
< center>
    <tr>
          <td height="141"><table width="980" border="1" cellspacing="3" cellpadding="1">
          <tr>
            <td height="23" bgcolor="#2C66A7"><strong><font face="Arial" size="2" color="#FFFFFF">Column1</font></strong></td>
            <td bgcolor="#2C66A7"><strong><font face="Arial" size="2"  color="#FFFFFF">Column2</font></strong></td>
            <td bgcolor="#2C66A7"><strong><font face="Arial" size="2" color="#FFFFFF">Column3</font></strong></td>
            <td bgcolor="#2C66A7"><strong><font face="Arial" size="2" color="#FFFFFF">Column4</font></strong></td>
            <td bgcolor="#2C66A7"><strong><font face="Arial" size="2" color="#FFFFFF">Column5</font></strong></td>
            <td bgcolor="#2C66A7"><strong><font face="Arial" size="2" color="#FFFFFF">Column6</font></strong></td>
            <td bgcolor="#2C66A7"><strong><font face="Arial" size="2" color="#FFFFFF">Column7</font></strong></td>
          </tr>

              <tr>
                <td height="29">&nbsp;<font face="Arial" size="2" >Data1</font></td>
                <td>&nbsp;<font face="Arial" size="2" ></font></td>
                <td>&nbsp;<font face="Arial" size="2" ></font></td>
                <td>&nbsp;<font face="Arial" size="2" >10-Aug-09</font></td>
                <td>&nbsp;<font face="Arial" size="2" >17:50</font></td>
                <td>&nbsp;<font face="Arial" size="2" ></font></td
                <td>&nbsp;<font face="Arial" size="2" ></font></td>
              </tr>
              ...............................
              ...............................
              ...............................
              ...............................
              <tr>
                <td height="29">&nbsp;<font face="Arial" size="2" >Data6</font></td>
                <td>&nbsp;<font face="Arial" size="2" ></font></td>
                <td>&nbsp;<font face="Arial" size="2" ></font></td>                  
                <td>&nbsp;<font face="Arial" size="2" >13-Aug-09</font></td>
                <td>&nbsp;<font face="Arial" size="2" >15:39</font></td>
                <td>&nbsp;<font face="Arial" size="2" ></font></td>
                <td>&nbsp;<font face="Arial" size="2" >column7data</font></td>
              </tr>
        </table></td>
    </tr> 
 < /center>< /body> < /html>



第1列 第2列 第3列 第4列 第5列 第6列 第7列 数据1 2009年8月10日 17:50
您应该使用XML解析器解析此文档-您可以从DOM解析器、SAX解析器和其他解析器中进行选择。这里提供了一个很好的使用XML解析器的教程:

下面是使用DOM从URL解析XML文件的函数示例:

    public static Document parseDOMfromURL(String url_str)
    {
        try
        {
            URL url = new URL(url_str);
            InputSource input = new InputSource(new InputStreamReader(url.openStream(), "UTF-8"));
            DocumentBuilderFactory docBuilderFactory =  DocumentBuilderFactory.newInstance();
            DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
            Document doc = docBuilder.parse(input);

            return doc;
        } 

        catch (MalformedURLException e) { ErrorMSG("Bad URL: " + url_str);  } 
        catch (UnsupportedEncodingException e) { ErrorMSG("Unsupported encoding");  } 
        catch (IOException e) { ErrorMSG("Failed to parse Document from input stream"); e.printStackTrace();} 
        catch (ParserConfigurationException e) { ErrorMSG("Failed to init document builder"); } 
        catch (SAXException e) { ErrorMSG("Failed to parse Document from input stream (SAX)");}

        return null;
    }
当您获得
Document
时,您可以调用
Document.findElementsByTagName(“tr”)
;之后,循环遍历每个NodeArray并处理
td
元素:

        NodeList tr_tags = doc.getElementsByTagName("tr");
        for (int i=0; i<tr_tags.getLength(); i++)
        {
            Node tr_tag = tr_tags.item(i);
            for (Node node=tr_tag.getFirstChild(); node!=null; node=node.getNextSibling())
            {
                if (node.getNodeName().equals("td"))
                {
                    // DO YOUR WORK HERE
                }
            }
        }
NodeList tr_tags=doc.getElementsByTagName(“tr”);
对于(int i=0;i