2011-09-22 83 views
0

我有以下情形:在C#中使用HTMLAgilityPack需要一些HTML元素 - 怎麼做?

<a href="test.com">Some text <b>is bolded</b> some is <b>not</b></a> 

現在,我該如何獲得「test.com」部分和文本的錨,而無需粗體部分?

+0

您是否正在提取「某些文本是粗體有些不是」(沒有格式標記的錨文本)或「某些文本是否」(標記中的內容被刪除)? – josh3736

+0

我需要在錨點和整個文本中提取鏈接,而無需格式化標記。那將是「有些文字是粗體的,有些不是」。 – Daniel

回答

2

假設下面的標記:

<html> 
<head> 
    <title>Test</title> 
</head> 
<body> 
    <a href="test.com">Some text <b>is bolded</b> some is <b>not</b></a> 
</body> 
</html> 

你可以執行以下操作:

class Program 
{ 
    static void Main() 
    { 
     var doc = new HtmlDocument(); 
     doc.Load("test.html"); 
     var anchor = doc.DocumentNode.SelectSingleNode("//a"); 
     Console.WriteLine(anchor.Attributes["href"].Value); 
     Console.WriteLine(anchor.InnerText); 
    } 
} 

打印:

test.com 
Some text is bolded some is not 

當然,你可能想通過提供調整SelectSingleNode XPath的選擇一個唯一的ID或一個類名到您想要獲取的錨:

// assuming <a href="test.com" id="foo">Some text <b>is bolded</b> some is <b>not</b></a> 
var anchor = doc.GetElementbyId("foo"); 
+0

正是我需要的。我在HTML上做了一些攻擊來獲取我想要的文本。我刪除了鏈接,然後將其提供給HtmlDocument的LoadHTML方法。它做了詭計。不幸的是,我無法使用GetElementbyId,所以黑客做得不錯。 – Daniel

相關問題