【问题标题】:htmlagilitypack parse table by thhtmlagilitypack 解析表
【发布时间】:2013-05-01 21:04:23
【问题描述】:

我正在尝试使用 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;
}

但似乎无法获得正确的值..任何想法我做错了什么?

【问题讨论】:

    标签: c# html-agility-pack


    【解决方案1】:

    以下代码:

    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 元素,一旦被修剪(规范化空格)。

    【讨论】:

      猜你喜欢
      • 2012-12-21
      • 2022-08-23
      • 2018-10-22
      • 2019-01-26
      • 2016-11-20
      • 2015-03-31
      • 2012-09-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多