Какой xPath я должен использовать для отображения запрошенных данных? - PullRequest
0 голосов
/ 25 марта 2011

Я использую следующий скрипт для получения заголовка и содержания RSS-канала. Структура этого: (я думаю, я не сделал никакой ошибки)

<div id="feedBody">
<div id="feedContent">
<div class="entry">
<h3>TITLE OF POST</h3>
<div base="http://feeds.feedburner.com/blogspot/hyMBI" 
     class="feedEntryContent"
    > CONTENT OF POST </div>
</div>
</div>
</div>




<?php
$dom = new DOMDocument;
libxml_use_internal_errors(TRUE);
$dom->loadHTMLFile('http://feeds.feedburner.com/blogspot/hyMBI');
libxml_clear_errors();

$xPath = new DOMXPath($dom);
$links = $xPath->query('????????????????');
foreach($links as $link) {
    printf("%s \n", $link->nodeValue);
}
?>

Какой xPath я должен использовать для получения данных? Есть ли способ разделить их? Большое спасибо, надеюсь, это мой последний вопрос по моему проекту ...

Ответы [ 2 ]

0 голосов
/ 25 марта 2011

Basic XPath: //div[@class="entry"] возвращает массив всех записей. Вы можете получить первую (или единственную) запись с //div[@class="entry"][1]. При этом вы можете использовать h3 для получения текста заголовка узла и div[1] для получения содержимого (если гарантированно, что есть только один, в противном случае укажите класс).

Вы можете соединить их как //div[@class="entry"][1]/h3, если хотите, так что вам нужно только запросить корневой узел. В противном случае сохраните новый узел для следующего запроса, например:

$entries = $xPath->query('//div[@class="entry"][1]');
foreach($entry in $entries) {
  $title = $xPath->evaluate('h3[1]',$entry);
  $post = $xPath->evaluate('div[1]',$entry);
}

Если ваш RSS возвращает целую группу сообщений, вы можете пропустить первую [1] и перебрать всю группу таким образом.

0 голосов
/ 25 марта 2011

Во-первых, вы должны загрузить XML, используя load, а не loadHTMLFile.

Судя по названию вашей переменной "$ links", я думаю, вам нужны значения элементов <link>внутри <item> элементов.Итак, создайте запрос xpath, который говорит только следующее: //item/link.

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