如何使用HtmlAgilityPack解析标记

如何使用HtmlAgilityPack解析标记,html,Html,我能解析收音机,复选框等。 但在分析select节点时: <select name="customeDropDown1" style="height :27px;width :121px;margin-top :75px;margin-left :401px;color:#000000;background-color:#FFFFFF;font-family:Roboto;font-style:;font-size:16px;position:absolute;"> <opti

我能解析收音机,复选框等。 但在分析select节点时:

<select name="customeDropDown1" style="height :27px;width :121px;margin-top :75px;margin-left :401px;color:#000000;background-color:#FFFFFF;font-family:Roboto;font-style:;font-size:16px;position:absolute;">
<option>Option1
</option>
<option>Option1
</option>
<option selected="selected">Option1
</option>
</select>
但无法获取选项标记中的值 我试过了

dropDown .InnerHtml
dropDown . InnerText

我发现使用Xpath可以解决这个问题,任何代码示例都会很有帮助


我使用的是C win表单应用程序。

由于一些奇怪的原因,HtmlAgilityPack无法正确处理这些标记,因此这解决了我的问题

        // Iterating over nodes to build the dictionary
        foreach (HtmlNode city in citiesNodes)
        {
            if (city.NextSibling != null)
            {
                string key   = city.NextSibling.InnerText;
                string value = city.Attributes["value"].Value;

                citiesHash.AddCity (key,value);
            }
        }

我没有直接到达节点,而是通过使用上一个simbling中的NextSimbling引用来获取每个节点的值。

您也可以试试这个。对于其他需要尝试其他方法的人,答案对我不起作用,我最终只是从父节点引用子节点:

HtmlNode.ElementsFlags.Remove("option"); // need this before you do anything with HAP

var options = htmlDoc.DocumentNode.SelectNodes("//select[@id='myselect']/option")
for (var i = 0; i < options.Count; i++) {
    var val = options[i].InnerHtml;
}

我试着做一个foreach,遍历节点,这给了我空值。这对我来说很好。

如何获取文本区域的内部文本?我也无法解析标记中的值。如果我能做到,我会发布答案吗
        // Iterating over nodes to build the dictionary
        foreach (HtmlNode city in citiesNodes)
        {
            if (city.NextSibling != null)
            {
                string key   = city.NextSibling.InnerText;
                string value = city.Attributes["value"].Value;

                citiesHash.AddCity (key,value);
            }
        }
HtmlNode.ElementsFlags.Remove("option"); // need this before you do anything with HAP

var options = htmlDoc.DocumentNode.SelectNodes("//select[@id='myselect']/option")
for (var i = 0; i < options.Count; i++) {
    var val = options[i].InnerHtml;
}