Поиск всех элементов в теге P с помощью Xpath в iOS - PullRequest
3 голосов
/ 28 июня 2011

Я не думаю, что iOS-часть этого вопроса действительно имеет большое значение, но я просто подумал, что добавлю эту часть просто для безопасности.Я пытаюсь проанализировать некоторый HTML-код для приложения (клиент хочет проанализировать HTML вместо использования веб-представления), и я использую код hpple, который я нашел в другом вопросе, наряду с форматом XPath для поиска.Мне довольно удобно с Xpath, я никогда не использовал его, но я начинаю понимать, но я застрял при попытке получить одну часть HTML (я могу искать и находить все остальное, что мне нужно).Из исходного HTML-файла то, что мне нужно вытащить, заключено в тег ap, но внутри тега p также может быть несколько других узлов (например, href ', em, br "и т. Д.). Весь тег p, который яwant также заключен в класс div, и я попытался выяснить, могу ли я получить все элементы в классе div, а также в p, но пока не могу получить то, что мне нужно.быстрый пример того, как будет выглядеть HTML.

<div class='post'><p> This is some sample text that also includes a <a href="www.link.com">Sample Link</a> and also some <em>formatted</em> text.<p><p> A New line may also be present</p></div>

Так что мне действительно нужно получить все теги <p> в классе div, поскольку в некоторых случаях их может быть больше. Я пробовал //div[@class='body']/p[text()] в моей последней попытке, но это тоже не сработало, просто вытащил период из поста.

Как только я получу все, что хочу, я хочу конвертировать весь пост в строку NSString, которая будет использоваться в приложении,но эту часть я могу в значительной степени выполнить на своем, как только я получу правильный формат поиска XPath. Спасибо.

РЕДАКТИРОВАТЬ: Вот код в iOS, который я использую, чтобы сначала выполнить поиск Xpath, а затем повернутьрезультат в строку.Может быть, именно здесь я делаю что-то не так.

NSArray *foundPosts = [xpathParser search:@"//div[@class='post']//p//node()"];
TFHppleElement *postelement = [foundPosts objectAtIndex:0];
NSString *Posts = [postelement content];

1 Ответ

4 голосов
/ 28 июня 2011

XPath:

//div[@class='post']//p

вернет все элементы-потомки p в любом теге div с атрибутом class, равным "post".

XPath

//div[@class='post']//p//node()

вернет все узлы-потомки (тексты и элементы) под всеми тегами-потомками p этого конкретного div.

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