如何在android中从html响应表中检索多列数据
大家好,我是android应用程序的新手,我使用POST方法和 获取了logcat中显示的html响应页面。html响应页面包含一个表,我需要从中检索1,4,5,7列数据,并将每列数据存储在一个数组中。 下面是表格数据的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;
< 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"> <font face="Arial" size="2" >Data1</font></td>
<td> <font face="Arial" size="2" ></font></td>
<td> <font face="Arial" size="2" ></font></td>
<td> <font face="Arial" size="2" >10-Aug-09</font></td>
<td> <font face="Arial" size="2" >17:50</font></td>
<td> <font face="Arial" size="2" ></font></td
<td> <font face="Arial" size="2" ></font></td>
</tr>
...............................
...............................
...............................
...............................
<tr>
<td height="29"> <font face="Arial" size="2" >Data6</font></td>
<td> <font face="Arial" size="2" ></font></td>
<td> <font face="Arial" size="2" ></font></td>
<td> <font face="Arial" size="2" >13-Aug-09</font></td>
<td> <font face="Arial" size="2" >15:39</font></td>
<td> <font face="Arial" size="2" ></font></td>
<td> <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