2015-08-22 115 views
0

我想提取每個產品的庫存數量(td5) ,並且如果庫存爲空,系統不會在該表中寫入0。 我的代碼提取數量將是:Html Agility Pack c#

HtmlNode node = doc.DocumentNode.SelectSingleNode("//tr[1]//td[5]"); 

有了這個,我得到的當然是股票產品2項,ANY1了一招,我 預處理表並填寫0或者另一種方式td's到 抓正確的數字到正確的產品?

HTML:

<tr> 
     <td class="data">product1</td> 
     <td class="data" width="350">TEST1</td> 
     <td class="data">27</td> 
     <td class="data">ST</td> 
     <td class="data"></td> 
     <!-- <td class=data>`LIST-KWERT[j].value`</td> --> 
     <td class="data"></td> 
     <!-- <td class=data>`LIST-SEINM[j].value`</td> --> 
     <!-- <td class=data>`LIST-SSPEM[j].value`</td> --> 
    <td class="data"></td> 
     <td class="data"></td> 
     <td class="data"></td> 
     <td class="data">999,9</td> 
    </tr> 

     <tr> 
     <td class="data">product2</td> 
     <td class="data" width="350">TEST2</td> 
     <td class="data">13</td> 
     <td class="data">ST</td> 
     <td class="data">21,000</td> 
     <!-- <td class=data>`LIST-KWERT[j].value`</td> --> 
     <td class="data"></td> 
     <!-- <td class=data>`LIST-SEINM[j].value`</td> --> 
     <!-- <td class=data>`LIST-SSPEM[j].value`</td> --> 
    <td class="data">5,000</td> 
     <td class="data">10,000</td> 
     <td class="data">243</td> 
     <td class="data">35,5</td> 
    </tr> 
+0

我不知道很多關於htmlagilitypack但我想你可以測試,如果文本在td5'IsNullOrWhitespace'中並相應地設置爲零。 – imlokesh

回答

0

如果你想獲得每行中的第5 TD您使用此代碼:

var html = new HtmlDocument(); 
html.LoadHtml(input); 
var root = html.DocumentNode; 
var list = new List<Data>(); 
foreach (var node in root.SelectNodes("//tr//td[5]")) 
{ 
    var price = node.InnerText.IsNullOrWhiteSpace() ? "no price" : node.InnerText; 
} 
+0

這不工作這樣: 沒有給出的參數對應於'string.IsNullOrWhiteSpace(字符串)'所需的形式參數'值' – Xjipi

+0

使用'string.IsNullOrWhiteSpace(node.InnerText)'而不是'node.InnerText .IsNullOrWhiteSpace()' – bumpy