使用LINQ to XML遍历HTML表格
问题描述:
因此,我可以轻松地使用LINQ to XML来遍历正确设置的XML文档。但是我在解决如何将它应用到HTML表格时遇到了一些问题。下面是设置:使用LINQ to XML遍历HTML表格
<table class='inner'
width='100%'>
<tr>
<th>Area</th>
<th>Date</th>
<th>ID</th>
<th>Name</th>
<th>Email</th>
<th>Zip Code</th>
<th>Type</th>
<th>Amount</th>
</tr>
<tr>
<td>Data</td>
<td>Data</td>
<td>Data</td>
<td>Data</td>
<td>Data</td>
<td>Data</td>
<td>Data</td>
<td>Data</td>
</tr>
<tr>
<td>Data</td>
<td>Data</td>
<td>Data</td>
<td>Data</td>
<td>Data</td>
<td>Data</td>
<td>Data</td>
<td>Data</td>
</tr>
</table>
本质上讲,有可能是行数之不尽,我希望能够去行由行相应检查数据。任何人都可以将我指向正确的方向吗?我应该使用LINQ以外的其他工具吗?
编辑:抱歉有关混乱,我的问题是,我试图收集数据的网页是HTML,而不是XML。确切的扩展名是“.aspx.htm”。这似乎没有正确加载,即使它不确定如何遍历HTML页面,因为有一张表在我尝试从中获取数据。
例如,下面是XPath表我试图从获取信息:
/html/body/form/div[3]/table/tbody/tr[5]/td/table
答
XElement myTable = xdoc.Descendants("table").FirstOrDefault(xelem => xelem.Attribute("class").Value == "inner");
IEnumerable<IEnumerable<XElement>> myRows = myTable.Elements().Select(xelem => xelem.Elements());
foreach(IEnumerable<XElement> tableRow in myRows)
{
foreach(XElement rowCell in tableRow)
{
// tada..
}
}
答
一旦你有一个的XElement与<table>
,你可以通过它的孩子Elements()
循环。
答
linq就像sql一样执行基于集合的操作。
你要专注于使用foreach循环到选定的一组xelements的迭代 -
你可能需要修改你的问题。我没有看到上面描述中的路障是什么......导致答案成为使用.Elements()/ loop的变体,即使您提到您之前使用过linq to xml。 – eglasius 2010-09-13 17:52:51
@eglasius是的,谢谢你的提示。我真的没有解释我的主要问题是什么。编辑。 – James 2010-09-13 21:01:12