2014-10-08 80 views
0

如何獲取此HTML塊中的文本?在br/tag之前和之後獲取文本 - vb.net中的htmlagilitypack

<td align="left" style="">2000000033754<br/>CHOICE_HARVEST-GALA _APPLE-10S</td>     

我使用HTMLAgilityPack,這是我的代碼在vb.net

If cols1(m).OuterHtml.Contains("<br>") Then 
    ' split into barcode and item name 
    Dim barcode As HtmlNode = cols1(m).SelectSingleNode("text()[preceding::br]") 
    sSQL = sSQL & "," & ToCHR(barcode.InnerText.Trim) 
    Dim item As HtmlNode = cols1(m).SelectSingleNode("text()[following::br]") 
    sSQL = sSQL & "," & ToCHR(item.InnerText.Trim) 

我需要得到這些結果

barcode.innertext = "2000000033754" - 這是工作

item.innertext = "CHOICE_HARVEST-GALA _APPLE-10S" - 需要幫助有了這個

+0

嘗試分開嗎? – 2014-10-08 03:36:51

回答

0

如果你知道這個是結構,您可以簡單地使用HtmlAgilityPack將HtmlNode和TextNode之間的節點拆分的事實。在下面的例子中,li包含三個孩子:兩個文本元素(beforeafter)通過使用一個跨度的HTML元素(br

var hd = new HtmlDocument(); 
hd.LoadHtml("<html><body><ul><li>before<br/>after</li></ul></body></html>"); 
var lis = hd.DocumentNode.FirstChild.FirstChild.FirstChild; // select the ul 
foreach (var li in lis.ChildNodes) 
{ 
    var firstTextNode = li.ChildNodes.First(hn => hn.NodeType == HtmlNodeType.Text); 
    var lastTextNode = li.ChildNodes.Last(hn => hn.NodeType == HtmlNodeType.Text); 
} 
相關問題