2013-07-30 194 views
5

我正在使用HTML Agility Pack選擇一個元素,並從加載的html字符串中返回該元素及其包含的所有內容。在測試我的代碼,我跑這對從W3Schools的選擇標記示例:HTML Agility Pack - 使用選項標籤選擇HTML選擇標籤的問題

<select name="cars"> 
    <option value="volvo">Volvo XC90</option> 
    <option value="saab">Saab 95</option> 
    <option value="mercedes">Mercedes SLK</option> 
    <option value="audi">Audi TT</option> 
</select> 

當我嘗試選擇與HTML敏捷包返回,我得到(選項關閉標籤去掉):

<select name="cars"> 
    <option value="volvo">Volvo XC90 
    <option value="saab">Saab 95 
    <option value="mercedes">Mercedes SLK 
    <option value="audi">Audi TT 
</select> 

所以我在這裏搜索了一下,發現了一條添加行的指令: HtmlNode.ElementsFlags.Remove(「option」);

我這樣做,現在我得到(選項文本移動選項標籤以外):

<select name="cars"> 
    <option value="volvo"></option>Volvo XC90 
    <option value="saab"></option>Saab 95 
    <option value="mercedes"></option>Mercedes SLK 
    <option value="audi"></option>Audi TT 
</select> 

我想輸出匹配原始的HTML。我需要做些什麼才能得到它?

我也在玩OptionWriteEmptyNodes,因爲當我用輸入標籤測試自己的自動關閉被刪除時,添加該選項似乎解決了這個問題。我現在評論它,以確保它不影響這個問題。

這是我的.NET的C#代碼:

HtmlDocument doc = new HtmlDocument(); 
doc.LoadHtml(content); 
HtmlNode.ElementsFlags.Remove("option"); // otherwise, the closing tag is removed. 

//doc.OptionWriteEmptyNodes = true; 

var nodes = doc.DocumentNode.SelectNodes("//select"); 

if (nodes == null) 
    return "Not found"; 
else 
    return nodes[0].OuterHtml; 
+0

在您的第一個示例HTML代碼中,您的