2016-08-25 7 views
0

私はebayアフィリエイト(パートナーネットワーク)rssのタイトルを抽出するためにPHPコードを使用していますが、私は成功しません。私は間違って何をしていますか? ところで、タイトルもリンクできますか?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[の内部にあることがわかりました。タイトルはそれの外にあるので、タイトルを手に入れることはできません。あなたは、出力、それはprintを使用することができます

$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 = $description;

0

は十分に担当者コメントはありませんでしょう。

このフィードにはtd要素はありません。それはHTMLファイルでもありません。代わりに

  • ロードXML
  • として
  • タイトルノードを選択するために、XPath式を作成して反復は、ノードを返され、それらがノードの
  • 抽出テキスト値、実際のDOMノードいることを確認してください。

は、ここで私はそれを行うだろう方法は次のとおりです。

$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>'; 
    } 
} 
関連する問題