Получите значение href, используя XPath/Hpple/Objective-C

Я пробовал все, что имеет (и не имеет) смысла для меня. У меня есть следующий html-код, который я пытаюсь проанализировать с помощью XPath в Objective-C:

<tr style="background-color: #eaeaea">
   <td class="content">
      <a href="index.php?cmd=search&id=foo">bar</a>
   </td>
</tr>

Я получаю "bar" через //tr/td[@class='content']/a/text().

Но я понятия не имею, как получить index.php?cmd=search&id=foo.

Это действительно приводит меня в отчаяние :-(

Большое вам спасибо за вашу помощь!


person HAS    schedule 28.06.2012    source источник


Ответы (2)


Попробовав всю ночь (снова), я узнал, как решить мою проблему:

//Put the elements in an array
NSArray *someArray = [xpathParser searchWithXPathQuery:@"//tr/td[@class='content']/a"];

//Just one possibility to make a for-loop
for (TFHppleElement *element in someArray) {
    //This is the important line:
    NSString *myURL = [[element attributes] objectForKey:@"href"];
    //Do whatever you want with myURL
}

Я надеюсь, что это поможет некоторым людям!

person HAS    schedule 29.06.2012

Чтобы получить часть href через XPATH, вам нужно использовать символ @ перед именем атрибута.

//tr/td[@class='content']/a/@href

ОБНОВЛЕНО:

Кажется, вы имеете в виду iphone.

Попробуйте что-то подобное для получения значения атрибута

NSArray *link = [xmlData valueForKey:@"href"];
person Siva Charan    schedule 28.06.2012
comment
Спасибо за быстрый ответ, но я попробовал это, и это не работает... Я не знаю, я храню найденные значения в NSArray, и если я использую //tr/td[@class='content ']/a/text() все в порядке, но когда я меняю его на //tr/td[@class='content']/a/@href Xcode говорит *** -[__NSArrayM insertObject:atIndex:]: объект не может быть нулевым, так что XPath ничего не нашел, не так ли? - person HAS; 29.06.2012
comment
Большое спасибо за вашу помощь, проведя еще одну ночь, я нашел способ. Если есть другой (лучший) способ, дайте мне знать! - person HAS; 29.06.2012
comment
HAS - не могли бы вы отметить свой ответ как правильный? Я тоже обнаружил, что objectForKey:@href — это решение. - person Carl; 08.01.2014