2010-11-29 2 views
0

Я работаю с элементом управления Webbrowser на C# и пытаюсь получить доступ к некоторым HtmlElements в документе. Проблема заключается в том, что в документе Body содержатся только два из пяти детей. (Http://www.target.com/cart/ref=nav_sc_rev_checkout). Поэтому я не могу получить доступ к конкретным элементам в теле, хотя он отлично отображает пользовательский интерфейс.Может ли Webbrowser Control обрабатывать «плохой» HTML?

Я подозреваю, что в теле есть плохой HTML, чтобы дерево документов было повреждено?

Есть ли способ справиться с этим, так как он по-прежнему делает приятным ..?

Спасибо.

Update: Проблема заключалась в том, что событие DocumentCompleted было вызвано, но Док не был полностью разобран, так что именно поэтому я получил только 2 из 5 элементов.

ответ

1

Да, WebBrowser является обертки вокруг IE, и он будет обрабатывать плохой HTML настолько хорошо, насколько это возможно.

0

Не можете ли вы просто написать содержимое в текстовый файл вместо элемента управления веб-браузера и сделать это в файле HTML. Затем загрузите его в свой браузер и проверьте с помощью инструмента dev по вашему выбору.

0

Помимо того, что код html этого сайта содержит более 200 errors (в основном отсутствующие объекты), вы можете попробовать загрузить этот код в XmlDocument или XDocument внутри вашей программы и получить доступ к узлам, которые вы хотите получить через XPath.

0

Если вам необходимо программно взаимодействовать с HTML и, более конкретно, плохой HTML, я бы предложил вам взглянуть на HTMLAgilityPack.

Это проворный HTML парсер, который строит для чтения/записи DOM и поддерживает простой XPATH или XSLT (вы на самом деле не должны понимать XPATH ни XSLT, чтобы использовать его, не волнуйтесь. ..). Это библиотека .NET-кода, которая позволяет вам разобрать HTML-файлы «вне Интернета». Анализатор очень толерантен с «реальным « неправильным HTML ». Объект модель очень похожа на то, что предлагает System.Xml, но для документов HTML (или потоков).

Смежные вопросы