2011-09-22 54 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

相关问题