Разобрать HTML-комбокс в C # - PullRequest
0 голосов
/ 20 октября 2010

Мне нужно проанализировать значение выбора в HTML-файл. У меня есть этот HTML-файл:

<html>
<head></head>
<body>
    <select id="region" name="region">
        <option value="0"  selected>Všetky regiony</option> 
        <optgroup>Banskobystrický kraj</optgroup>
        <option value="k_1">Banskobystrický kraj</option>
        <option value="1">Banská Bystrica</option>
        <option value="3">Banská Štiavnica</option>
        <option value="18">Brezno</option>
        <option value="22">Detva</option>
        <option value="58">Dudince</option>
    </select>
</body>
</html>

Мне нужно получить значение параметра select, а также текстовое значение в словаре. Я загружаю этот файл в компонент webBrowser и пытаюсь получить тег select по идентификатору "region".

        webBrowser1.Url = new Uri("file://\\C:\\1.html");

        if (webBrowser1.Document != null)
        {
            HtmlElement elems = webBrowser1.Document.GetElementById("region");
        }

Но объектные элементы являются нулевыми, я не понимаю, почему. Есть аванс?

РЕДАКТИРОВАТЬ: Проблема была решена с помощью пакета Agillity Html. Спасибо всем. Я был глуп, мне лучше сначала выслушать твой совет с Html Agillity Pack.

Ответы [ 2 ]

0 голосов
/ 20 октября 2010

Html Agility Pack - отличный анализатор HTML.

0 голосов
/ 20 октября 2010

Вы можете сделать это с помощью HtmlAgilityPack .Есть много примеров использования его для разбора HTML.Вы можете найти через поиск Google.Вот некоторые из них:

http://htmlagilitypack.codeplex.com/wikipage?title=Examples&referringTitle=Home

Как использовать пакет Agility для HTML

ОБНОВЛЕНИЕ:

Хотя я думаю, что использование библиотеки - лучший выбор, вы можете сделать это с помощью элемента управления webbrowser следующим образом:

    webBrowser1.DocumentCompleted += 
          new WebBrowserDocumentCompletedEventHandler(ParseOptions);

    webBrowser1.Url = new Uri("C:\\1.html", UriKind.Absolute);

    private void ParseOptions(object sender,
        WebBrowserDocumentCompletedEventArgs e)
    {
        HtmlElement elems = webBrowser1.Document.GetElementById("region");
    }

Обратите внимание, что анализ выполняется в DocumentCompleted обработчик событий.

...