C# 使用HtmlAlityPack单独选择HTML选项值

C# 使用HtmlAlityPack单独选择HTML选项值,c#,html-agility-pack,C#,Html Agility Pack,我试图将选项列表的值作为单个项获取,但这段代码只是将整个列表捕获到一个元素中。以下是我正在使用的代码: List<string> chapterTitles = new List<string>(); HtmlNode.ElementsFlags.Remove("option"); doc.LoadHtml(htmlContent); foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//select[@id=

我试图将选项列表的值作为单个项获取,但这段代码只是将整个列表捕获到一个元素中。以下是我正在使用的代码:

List<string> chapterTitles = new List<string>();
HtmlNode.ElementsFlags.Remove("option");
doc.LoadHtml(htmlContent);
foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//select[@id='chap_select']/option"))
chapterTitles.Add(node.InnerText);
List chapterTitles=新列表();
HtmlNode.ElementsFlags.Remove(“选项”);
doc.LoadHtml(htmlContent);
foreach(doc.DocumentNode.SelectNodes(//select[@id='chap\u select']]/option)中的HtmlNode节点)
chapterTitles.Add(node.InnerText);
发生的情况是chapterTitles中的第一个元素具有整个选项值集,而不是(例如),列表中有12个不同的条目对应于具有12个值的选项列表

下面是我试图解析的HTML段:

<SELECT id=chap_select title="Chapter Navigation" Name=chapter onChange="self.location = '/s/5231611/'+ this.options[this.selectedIndex].value + '/Behind-Enemy-Lines-I-Light-Hammer';"><option  value=1 selected>1. Prologue<option  value=2 >2. Chapter One<option  value=3 >3. Chapter Two<option  value=4 >4. Chapter Three<option  value=5 >5. Chapter Four<option  value=6 >6. Chapter Five<option  value=7 >7. Chapter Six<option  value=8 >8. Chapter Seven<option  value=9 >9. Chapter Eight<option  value=10 >10. Chapter Nine<option  value=11 >11. Chapter Ten<option  value=12 >12. Chapter Eleven</select>
1。序言2。第一章第三章。第二章,第四章。第35章。第四章6。第五章第七章。第六章8。第七章9。第八章10。第九章11。第十二章。十一章

有什么建议吗?

HtmlAgilityPack似乎没有很好地解析代码。例如,代码

<option  value=3 >3. Chapter Two<option  value=4 >...
主要的两个区别是:

  • 我删除了
    HtmlNode.ElementsFlags.Remove(“选项”)
  • 文本位于
    选项
    节点旁边的节点中(而不是内部)
    你能发布你正在解析的相关HTML代码吗。
    <option value="3">3. Chapter Two</option>
    <option value="4">...
    
    var doc = .. //Load the HTML code here.
    foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//select[@id='chap_select']/option")) {
        chapterTitles.Add(node.NextSibling.InnerText);
    }