Конвертировать HTML в XML с WP7 - PullRequest
       10

Конвертировать HTML в XML с WP7

0 голосов
/ 19 января 2011

простая ситуация, хотите найти строку HTML, получить пару информации. Получает раздражает после написания массовых строк. Substing и. IndexOf для каждого элемента, который я хочу найти и вырезать из файла HTML.

Afaik Я не могу загрузить такие dll, как HTMLtidy или HTML Agility Pack, в мой проект WP7, поэтому есть ли более эффективный и надежный способ поиска по моей строке HTML вместо создания субстанций с IndexOf?

    void client_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
    {
       string document = string.Empty;
       using (var reader = new StreamReader(e.Result))
          document = reader.ReadToEnd();

       string temp = document.Substring(document.IndexOf("Games Played"), (document.IndexOf("League Games") - document.IndexOf("Games Played")));
       temp = (temp.Substring(temp.IndexOf("<span>"), (temp.IndexOf("</span>") - temp.IndexOf("<span>")))).Remove(0, 6);
       Int32.TryParse(temp, out leaugeGamesPlayed);
    }

Спасибо за вашу помощь

Gpx

Ответы [ 4 ]

4 голосов
/ 20 января 2011

Вы можете использовать HTML Agility Pack, но вам нужна конвертированная версия HTML Agility Pack для телефона.Он доступен только из репозитория SVN, но он отлично работает, я использую его в своем приложении.

http://htmlagilitypack.codeplex.com/SourceControl/changeset/view/77494#

Вы можете найти два проекта в trunk, называемые HAPPhone и HAPPhoneTest.Вы можете использовать кнопку загрузки справа, чтобы получить код.Для работы используется Linq вместо XPath.

3 голосов
/ 20 января 2011

Предполагается, что вы делаете это, потому что вы получаете HTML с веб-сайта / страницы / сервера.

Не конвертируйте его на устройстве.

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

  • Код на сервере будет проще обновлять, чем код в распространяемом приложении. (Опыт разбора HTML, который вы не контролируете напрямую, покажет, что вам нужно будет внести изменения в ваш синтаксический анализ, поскольку исходный HTML почти наверняка вызовет в вас что-то неожиданное при изменении в будущем.)
  • Если вы можете сделать это один раз на сервере, вы можете кэшировать результат, вместо того, чтобы экземпляр приложения выполнял преобразование заново.
  • В силу вышеуказанных 2 пунктов приложение будет работать быстрее!

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

3 голосов
/ 19 января 2011

Вы можете использовать LINQ для разбора HTML и найти интересующие вас элементы. Например:

XDocument parsed = XDocument.Parse(document);
var spans = parsed.Descendants("span");

У Бет Масси есть отличная запись в блоге: Запрос HTML с LINQ to XML

0 голосов
/ 20 января 2011

В качестве обходного пути вы можете рассмотреть загрузку HTML в элемент управления WebBrowser и затем запросить DOM с помощью внедренного javascript (который вызывает .NET)

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