我正在尝试使用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;
}
但是似乎无法得到正确的价值。任何想法我做错了什么?
答案 0 :(得分: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元素,一旦修剪(normalize-space)。