2010-03-29 142 views
6

我在他们的网站上找不到任何教程。我想知道是否可以使用Html Agility Pack并使用它来解析字符串?我可以使用Html Agility Pack吗?

就像说我有

string = "<b>Some code </b> 

我可以用敏捷包摆脱<b>标签?到目前为止,我看到的所有例子都是像HTML文件一样加载的。

+0

追加例题... – 2010-03-29 05:51:38

+1

它可能会更simlier与HAP做,在一行:'变种文字= HtmlNode.CreateNode(“一些代码”).InnerText;' – Alex 2012-03-04 15:31:39

回答

8

如果是html,那么是的。

string str = "<b>Some code</b>"; 
// not sure if needed 
string html = string.Format("<html><head></head><body>{0}</body></html>", str); 
HtmlDocument doc = new HtmlDocument(); 
doc.LoadHtml(html); 

// look xpath tutorials for how to select elements 
// select 1st <b> element 
HtmlNode bNode = doc.DocumentNode.SelectSingleNode("b[1]"); 
string boldText = bNode.InnerText; 
+0

好吧那么我会怎么用它做我将如何做一些解析? – chobo2 2010-03-29 05:24:05

+0

嗯,谢谢,但我复制并将该代码粘贴到控制台应用程序并导入html敏捷性后面,但在HtmlNode行我得到一个空引用异常。 – chobo2 2010-03-29 18:38:54

+0

也许它是HtmlNode bNode = doc.DocumentNode.SelectSingleNode(“/ b [1]”); – 2010-03-30 04:36:01

2

我不认为这真的是HtmlAgilityPack的最佳用法。

通常我会看到有人试图使用正则表达式来分析大量的html,并将它们指向HtmlAgilityPack,但在这种情况下,我认为使用正则表达式会更好。

罗伊Osherove有一篇博客文章中描述了如何从一个片断去掉所有的HTML:

即使你没有得到与米卡科拉里的样品这会将正确的XPath仅适用于其中包含<b>标记的片段,并且如果代码发生更改,将会中断。