6

HTMLAgilityPack で id 属性を持つ td の内部テキストを選択しようとしています。

HTML コード:

<td id="header1">    5    </td>
<td id="header2">    8:39pm    </td>
<td id="header3">    8:58pm    </td>
...

コード:

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();

doc.LoadHtml(data);

var nodes = doc.DocumentNode.SelectNodes("//td[@id='header1']");

if (nodes != null)
{
    foreach (HtmlAgilityPack.HtmlNode node in nodes)
    {
        MessageBox.Show(node.InnerText);
    }
}

tdタグを正しく選択していないため、nullノードを取得し続けていますが、何が間違っているのかわかりません...

編集:

header1とheader2を間違えましたが、header1~5まで5種類のtdタグがあります。

4

3 に答える 3

7

を選択しようとしていますheader1が、ID はheader2です。

直接使用することもできGetElementByIdます:

var td = doc.GetElementbyId("header2");
于 2013-03-16T11:38:11.320 に答える
1

うーん..あなたが何か悪いことをしているとは思いません。コードは<td>withのみを提供する必要がありますid="header1"。からheader1まで がheader5ある場合、次のことができます。

for (int i = 1; i <= 5; i++ ) {
    var tdNode = doc.DocumentNode.SelectSingleNode(string.Format("//td[@id='header{0}']", i));

    //do something with the node here
}

コード全体を投稿することをお勧めしますが、nullなぜ<td>.//tr[@id='some-id']//td[contains(@id, 'header')]

于 2013-03-18T06:24:57.600 に答える