2010-03-29 137 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>標記的片段,並且如果代碼發生更改,將會中斷。