3

我正在尝试使用 HtmlAgilityPack 提取一些内部文本。这是感兴趣的 HTML:

<select name="Archives" onchange="javascript:setTimeout(&#39;__doPostBack(\&#39;Archives\&#39;,\&#39;\&#39;)&#39;, 0)" id="Archives" style="width:200px;">
    <option selected="selected" value="Dashboard_Jul-2012">Dashboard_Jul-2012</option>
    <option value="Dashboard_Jun-2012">Dashboard_Jun-2012</option>
</select>

我在用:

string output = htmlwriter.InnerWriter.ToString()
var doc = new HtmlDocument();
doc.LoadHtml(output);
string inner = doc.DocumentNode.SelectSingleNode("//option[@selected='selected']").InnerText;

但我得到的只是空字符串。

任何建议表示赞赏。

问候。

4

1 回答 1

5

默认情况下,HTMLAgilityPack 将选项标签留空(您可以在HtmlAgilityPack 中看到作者这样做的原因——<form> 是否出于某种原因关闭自身?)。要修复它,请在选择节点之前添加此行:

HtmlNode.ElementsFlags.Remove("option");
于 2012-08-21T16:45:58.013 回答