target-c - какую библиотеку я должен использовать для анализа HTML - PullRequest
0 голосов
/ 11 августа 2011

Я пытаюсь проанализировать некоторые несложные RSS-html-контент в iphone.

Так что мне не нужен тяжелый анализатор HTML.

Я искал здесь и нашел эти два:

https://github.com/topfunky/hpple

https://github.com/zootreeves/Objective-C-HMTL-Parser

Оба просты в использовании.Но я думаю, у них есть свои проблемы для моей цели.

Для TFHpple это хорошо, но для каждого элемента он не имеет полного HTML <> с собой.например, элемент не имеет этой полной строки тега.Мне нужна эта полная строка тега, потому что мне нужно удалить ее из всей строки HTML.Я был бы более удобен для меня, если бы элемент имел это.

Для zootreeves HTML-Parser, это также просто и хорошо.И у него есть полная строка тега с каждым элементом.Я очень счастлив.Тем не менее, это, кажется, большой потребитель памяти.Я контролировал это.Если я попытаюсь проанализировать большое количество фрагментов HTML (скажем, 1000), то память, которая будет стоить и останется занятой, будет как 40 МБ.Это не относится к устройствам ios.Я полагаю, что zootreeves использует чистые C-коды и связанный список для организации древовидных структур HTML.и он использует чистый malloc и свободный для памяти.Я не знаю, повлияет ли это на память ios.

Итак, кто-нибудь может порекомендовать мне лучший, быстрый и простой анализатор HTML для iOs для меня?

Спасибо

1 Ответ

0 голосов
/ 11 августа 2011

Я бы использовал libxml2 .Это не только для XML;у него тоже есть HTML-парсер.Это быстро и мало памяти и доступно в iOS.Единственным недостатком является то, что это API на основе C, но при этом работать с ним не очень сложно.

Обновление

В ответ на первый комментарий нижеЭто было некоторое время, поэтому я не уверен, но я так не думаю.Вы получаете структуру данных с большим количеством информации о структуре документа, и у каждого тега есть список пар атрибут / значение.Нигде не сохраняется исходная строка html (я предполагаю, что это считается избыточным и не делается для экономии памяти).

Однако, похоже, вам это не нужно для того, что вы хотите сделать.Мне кажется, что вы используете информацию из парсера для изменения исходной строки, удаляя теги HTML.Вместо этого вы хотите перестроить документ, используя информацию из дерева разбора, и когда вы сделаете это, пропустите те теги, которые вы хотите опустить.

...