2011-01-21 91 views
2

我使用HTMLAgilityPack找到了一個元素內的以下元素列表。使用HTMLAgilityPack解析XHTML

<option value="67"><span style="color: #cc0000;">Horde</span> Leveling/Dailies & Event Guide ($50.00)</option> 

我需要做的是分析所有的文字出的標籤,沒有在那裏所有的魔神。我試過(貌似!)一切,但它永遠是這樣看:

部落
代練/樣片&活動指南($ USD50.00)

,有時像:

部落
代練
/樣片&活動指南($ USD50.00)

和其他一些類似的變化。我甚至已經將字符串中的每個字符打印爲一個字節,並且我還沒有找到任何換行符或提要,只有我期望的,常規字母和空格。以下是供參考的完整html源代碼,直接從頁面複製而來。

<option value="13"><span style="color: #0000ff;">Alliance</span> Leveling Guide ($30.00)</option> 


<option value="12"><span style="color: #cc0000;">Horde</span> Leveling Guide ($30.00)</option> 

<option value="46"><span style="color: #cc0000;">Horde</span> Dailies & Events Guide ($25.00)</option> 

<option value="67"><span style="color: #cc0000;">Horde</span> Leveling/Dailies & Event Guide ($50.00)</option> 


<option value="11"><span style="color: #0000ff;">Alliance</span> &amp; <span style="color: #cc0000;">Horde</span> Leveling Guide ($50.00)</option> 

<option value="97"><span style="color: #0000ff;">Alliance</span> Achievements & Professions Guide ($20.00)</option> 

<option value="98"><span style="color: #cc0000;">Horde</span> Achievements & Professions Guide ($20.00)</option> 


<option value="99"><span style="color: #0000ff;">Alliance</span> &amp; <span style="color: #cc0000;">Horde</span> Achievements & Professions Guide ($30.00)</option> 
+0

你能告訴我們你的代碼?你是否使用html-nodes的InnerText屬性btw? – Ozzy 2011-01-21 08:08:19

回答

5

默認情況下,<OPTION>標籤使用HTML敏捷性包視爲「空」的,這意味着它不需要關閉</OPTION>,這就是爲什麼在這種情況下,這是不容易趕上與XPATH。你可以使用HtmlNode.ElementFlags集合來改變它。

這是應該做你想要什麼代碼:

HtmlDocument doc = new HtmlDocument(); 
HtmlNode.ElementsFlags.Remove("option"); 
doc.LoadHtml(yourHtml); 
foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//option")) 
{ 
    Console.WriteLine(node.InnerText); 
} 
+0

這就是我得到我的元素,它正在獲取元素就好了,因爲我正在通過Id,而不是XPATH。我遇到的問題是InnerText屬性本身,以及格式如何出現。 HtmlNode option = doc.GetElementbyId(「pur_li」); – Tanner 2011-01-22 01:17:08