1

htmlagilitypack を使用して次のテーブルを解析しようとしています。

    <tr>
      <th>
        Anställda:
      </th>
      <td>
        0 - 4
      </td>
    </tr>
    <tr>
      <th>
        Oms (tkr):
      </th>
      <td>
        5 409
      </td>
    </tr>

Oms (tkr)の値を抽出しようとしています: (この場合は5 409 )

以下のコードは、上記の html テーブルを提供します。問題は、Oms (tkr) の値を取得することです。また、Oms (tkr) は常に同じ場所にあるとは限らず、テーブルのさらに下または上にある可能性があります。これは、Oms が Anställda などの場所にある場合があることを意味します。

foreach (HtmlAgilityPack.HtmlNode graf in (IEnumerable<HtmlAgilityPack.HtmlNode>)doc.DocumentNode.SelectNodes("//div[@id=\"info\"]//table")) {
var tabellHTdML = graf.InnerHtml;
MessageBox.Show(tabellHTdML);

}

私はやろうとしました:

if (tabellHTML.Contains("Oms"))
{
item.OMS = cells.InnerText;
}

しかし、正しい値を取得できないようです..私が間違っていることはありますか?

4

1 に答える 1

0

次のコード:

HtmlDocument doc = new HtmlDocument();
doc.Load("test.htm");

Console.WriteLine(doc.DocumentNode.SelectSingleNode("//th[starts-with(normalize-space(text()), 'Oms')]").InnerHtml.Trim());

これをダンプします:

Oms (tkr)

ただし、末尾を手動で解析する必要があります。Html Agility Pack は、要素と属性についてのみ認識します。XPATH式の意味: 'Oms' で始まるテキスト コンテンツを持つ任意の TH 要素を選択し、トリミング (正規化スペース) します。

于 2013-05-02T06:13:34.673 に答える