2013-05-01 57 views
1

我想解析下表使用htmlagilitypack。htmlagilitypack解析表由th

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

進出口試圖提取OMS(TKR)的值:(在此情況下)

在下面的代碼給我的上述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; 
} 

但不能似乎得到正確的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表達式表示:選擇任何具有以'Oms'開始的文本內容的TH元素,一旦被修整(規格化空間)。