2012-06-11 83 views
1

我正在嘗試爲給定的行/字符位置(例如行5,字符12)找到相應的HtmlNode。我瀏覽過幫助文檔,但我不太確定它是否可用。來自HTML敏捷包中的行號/位置號的HTMLNode

這是可能在Html Agility Pack中做的嗎?

編輯:

樣本HTML文件:

<!DOCTYPE html> 
<html> 
<body> 

<h4>An Ordered List:</h4> 
<ol> 
    <li>Coffee</li> 
    <li>Tea</li> 
    <li>Milk</li> 
</ol> 

</body> 
</html> 

我試圖讓位置線7條,字符5 - >咖啡LI和12日線,得到的回覆節點。

+0

你能提供的示例XML? – lionheart

回答

5

如果你在5號線,12位談論HTML,你可以做這樣的事情:

private void button1_Click_1(object sender, EventArgs e) 
{ 
    HtmlAgilityPack.HtmlWeb web = new HtmlAgilityPack.HtmlWeb(); 
    HtmlAgilityPack.HtmlDocument doc; 
    doc = web.Load("http://slashdot.org"); 


    var node = CheckLine(doc.DocumentNode); 
    if (node != null) 
     MessageBox.Show(node.OuterHtml); 
} 

private HtmlAgilityPack.HtmlNode CheckLine(HtmlAgilityPack.HtmlNode node) 
{ 
    if (node.Line == 5 && node.LinePosition < 12 && ((node.LinePosition + node.OuterHtml.Length) > 12)) 
     return node; 

    foreach (var n in node.ChildNodes) 
    { 
     var val = CheckLine(n); 
     if (val != null) 
      return val; 
    } 
    return null; 
} 
+0

非常好,我完全沒有看到LinePosition部分:(我猜唯一擔心的是大文件,我們的一些用戶仍然在Prescott的日子。 –

+0

實際上,在更新後的問題中給出了這一點代碼。我尋找第12行第2列,我沒有回到身體節點? –