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;
}
但似乎不能得到正确的值…任何想法我做错了什么?
以下代码:
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)。