Может ли Webbrowser Control обрабатывать «плохой» HTML? - PullRequest
0 голосов
/ 29 ноября 2010

Я работаю с элементом управления Webbrowser в C # и пытаюсь получить доступ к некоторым элементам Html в документе. Проблема в том, что тело документа содержит только двоих из пяти детей. (http://www.target.com/cart/ref=nav_sc_rev_checkout). Так что я не могу получить доступ к определенным элементам в теле, хотя в пользовательском интерфейсе он отображается нормально.

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

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

Спасибо.

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

Ответы [ 4 ]

1 голос
/ 29 ноября 2010

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

0 голосов
/ 29 ноября 2010

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

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

0 голосов
/ 29 ноября 2010

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

0 голосов
/ 29 ноября 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...