2013-05-01 2 views
1

Я пытаюсь разобрать следующую таблицу, используя htmlagilitypack.htmlagilitypack parse table by th

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

Im пытается извлечь значение для Oms (ТКР): (в этом случае)

Код ниже дает мне выше HTML таблицы. Проблема в том, что я извлекаю значение Oms (tkr). Следует также сказать, что Oms (tkr) не всегда находится на одном и том же месте, оно может быть дальше или дальше вверх в таблице. Под этим я подразумеваю, что Омс иногда может быть там, где Анстальда есть и так далее.

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

Но не могу показаться, чтобы получить правильные идеи value..any то, что я делаю неправильно?

ответ

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 означает: выберите любой элемент TH, который имеет текстовое содержимое, которое начинается с «Oms», после обрезки (нормализовать пространство).