我正在使用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;
在您的第一個示例HTML代碼中,您的
對不起,沒有意識到原來的例子在不同的地方有所不同。我用我的html文件讀了它。對困惑感到抱歉。 –