以下の表を解析しようとしていますが、残念ながら、各ノードは互いにネストされているようです。:(常にカウント=1を与えているため、子ノードを取得することはできません
それは本当に興味深いですが、それは発見です。たとえば、前のtrの子ノードとしての次の「tr」?
何か考えはありますか?
<table width="292px" border="0">
<tr>
<td>
</td>
</tr>
<tr>
<td>
<table>
<tr>
<td colspan="2" bgcolor="#FBCE9D" align="center" height="40">
</td>
</tr>
<tr>
<td bgcolor="#FFF4D2" height="25" width="60">
</td>
<td height="25" bgcolor="#e8e8e8">
</td>
</tr>
<tr>
<td bgcolor="#FFF4D2" height="25" width="60">
</td>
<td height="25" bgcolor="#e8e8e8">
</td>
</tr>
<tr>
<td bgcolor="#FFF4D2" height="25" width="60">
</td>
<td height="25" bgcolor="#e8e8e8">
</td>
</tr>
<tr>
<td bgcolor="#FFF4D2" height="25" width="60">
</td>
<td height="25" bgcolor="#e8e8e8">
</td> //Here is a missing "</tr>" and I think this one is confusing the agilitypack!
<tr>
<td bgcolor="#FFF4D2" height="35" colspan="2" align="center">
</td>
</tr>
</table>
</td>
</tr>
</table>
私のコードは次のとおりです。
var webGet = new HtmlWeb();
var doc = webGet.Load("the url where this table is located");
HtmlNodeCollection tb = doc.DocumentNode.SelectNodes("//table[@width='292px']");
var table = tb[0].ChildNodes[1].ChildNodes[0].ChildNodes[0].ChildNodes;
for (var na = 0; na < table.Count; na++)
{ .....do the work.... }
実際、このコードは以前は魅力のように機能していましたが、常にChildNodes[1]
存在しないため、その中に別のテーブルをネストしてスタックしていますか?ChildNodes[1]
ChildNodes[0]
もう1つ注意してください。Firebugは、ネストされたテーブルのXPathとして「/ html / body / table / tbody / tr [2] / td / table / tbody」を表示しますが、「tbody」は動的に生成されるため、htmlagilityに精通していないことに気付くかもしれません。欠落しているクローズタグ/trを削除するブラウザ