htmlagilitypack parse table by th

本文关键字:th by table parse htmlagilitypack | 更新日期: 2023-09-27 18:11:39

我正在尝试使用htmllagilitypack解析下面的表。

    <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);
}

I've try to do:

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

但似乎不能得到正确的值…任何想法我做错了什么?

htmlagilitypack parse table by th

以下代码:

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敏捷包只知道元素和属性。XPATH表达式的意思是:选择任何具有以'Oms'开头的文本内容的TH元素,并进行裁剪(normalize-space)。