由网友(咸鱼的生活)分享简介:我有一个这样的表NameAgeMarioAge: 78Jane我有一个这样的表
<table border="0" cellpadding="0" cellspacing="0" id="table2">
<tr>
<th>Name
</th>
<th>Age
</th>
</tr>
<tr>
<td>Mario
</td>
<th>Age: 78
</td>
</tr>
<tr>
<td>Jane
</td>
<td>Age: 67
</td>
</tr>
<tr>
<td>James
</td>
<th>Age: 92
</td>
</tr>
</table>
和希望使用HTML敏捷性包解析它。我曾尝试code无济于事:
And want to use HTML Agility Pack to parse it. I have tried this code to no avail:
foreach (HtmlNode row in doc.DocumentNode.SelectNodes("//table[@id='table2']//tr"))
{
foreach (HtmlNode col in row.SelectNodes("//td"))
{
Response.Write(col.InnerText);
}
}
我是什么做错了吗?
What am I doing wrong?
推荐答案
我必须提供完整的XPath。我用萤火虫从建议由@Coda( http://stackoverflow.com/a/3104048/1238850),我结束了这个code:
I had to provide the full xpath. I got the full xpath by using Firebug from a suggestion by @Coda (http://stackoverflow.com/a/3104048/1238850) and I ended up with this code:
foreach (HtmlNode row in doc.DocumentNode.SelectNodes("/html/body/table/tbody/tr/td/table[@id='table2']/tbody/tr"))
{
HtmlNodeCollection cells = row.SelectNodes("td");
for (int i = 0; i < cells.Count; ++i)
{
if (i == 0)
{ Response.Write("Person Name : " + cells[i].InnerText + "<br>"); }
else {
Response.Write("Other attributes are: " + cells[i].InnerText + "<br>");
}
}
}
我相信这可以写成的方式比这更好的,但它是为我工作了。
I am sure it can be written way better than this but it is working for me now.
相关推荐
最新文章