2016-08-25 5 views
0

Я использую код php для извлечения заголовка филиала ebay (Partner Network) rss, но у меня нет успеха. Что я делаю не так? Кстати, можно ли связать название тоже?Не удается извлечь файл заголовка rss

PHP

<?php 
$xml = new DOMDocument(); 
@$xml->loadHTMLFile('http://rest.ebay.com/epn/v1/find/item.rss?keyword=%28jewelry%2Ccraft%2Cclothing%2Cshoes%2Cdiy%29&sortOrder=BestMatch&programid=1&campaignid=5337945426&toolid=10039&listingType1=All&lgeo=1&topRatedSeller=true&hideDuplicateItems=true&entriesPerPage=2&feedType=rss'); 

$products = array(); 

    //Loop through each <td> tag in the dom and extract inner html 

foreach($xml->getElementsByTagName('td') as $p) { 
    $children = $p->childNodes; 
    $phtml = ''; 
    foreach ($children as $child) 
    { 
     $phtml.= $p->ownerDocument->saveHTML($child); 
    }  

    echo '<div id="mainproductafilioright1"><div class="product">' . $phtml . '</div></div>';  
} 
?> 
+1

Uhhhh ' getElementsByTagName ('td') 'видя, что вы получаете RSS-канал, нет тегов' td' ... вы просто скопировали какой-то код и не редактировали его вообще, чтобы делать то, что вы хотели. – cmorrissey

+0

Это потому, что это старый код, который я сконфигурировал ранее для другого rss. – User325313

ответ

0

Вы находитесь на правильном пути. При проверке страницы подачи я мог видеть, что элементы td находятся внутри <![CDATA[. но название находится за его пределами, поэтому вы не можете получить титул.

Попробуйте это временное решение (Это совершенно новый код, не должны быть вставлено с более старым):

$feedurl = "http://rest.ebay.com/epn/v1/find/item.rss?keyword=%28jewelry%2Ccraft%2Cclothing%2Cshoes%2Cdiy%29&sortOrder=BestMatch&programid=1&campaignid=5337945426&toolid=10039&listingType1=All&lgeo=1&topRatedSeller=true&hideDuplicateItems=true&entriesPerPage=8&feedType=rss"; 

$rss = simplexml_load_file($feedurl); 

foreach ($rss->channel->item as $item) { 

$link = $item->link; 

$title = $item->title; 

$description = $item->description; 

} 

Вы можете вывести его с помощью print:

print = $description;

0

комментарий Будет, но не хватает респ.

В этом канале нет элементов td. Это также не файл HTML.

Вместо:

  • нагрузки, как XML
  • Создание выражения XPath для выбора названия узлов
  • Iterate возвращаемые узлы и убедитесь, что на самом деле они DOM узлам
  • Extract текстовое значение узла.

Вот как я это сделать:

$doc = new DOMDocument(); 
$doc->loadXML("http://www.longurl.com"); 

$xpath = new DOMXPath($doc); 
$items = $xpath->query("/rss/channel/item/title"); 

foreach($items as $item) { 
    if(XML_ELEMENT_NODE === $item->nodeType) { 
     echo '<div id="mainproductafilioright1"><div class="product">' . $item->textContent . '</div></div>'; 
    } 
} 
Смежные вопросы