18

Flickr から RSS フィードを読み込もうとしていますが、Simple XML ( media:thumbnailflickr:profileなど) では読み取れないノードがいくつかあります。

どうすればこれを回避できますか?DOMのドキュメントを見ていると頭が痛くなります。学びたくないので避けたいと思います。

ところで、サムネイルを取得しようとしています。

4

4 に答える 4

19

解決策は、この素敵な記事で説明されています。children()名前空間を含む XML 要素にアクセスするためのメソッドが必要です。このコード スニペットは記事から引用されています。

$feed = simplexml_load_file('http://www.sitepoint.com/recent.rdf'); 
foreach ($feed->item as $item) { 
    $ns_dc = $item->children('http://purl.org/dc/elements/1.1/'); 
    echo $ns_dc->date; 
}
于 2009-07-27T01:54:25.217 に答える
3

あなたは名前空間を扱っていますか?->children メソッドを使用する必要があると思います。

$ns_dc = $item->children('http://namespace.org/');

xml 宣言のスニペットを提供できますか?

于 2009-07-27T01:52:54.343 に答える
1

名前空間を宣言せずに名前空間付きの XML ノードにアクセスする PHP を使用したさらに簡単な方法は、次のとおりです。

>の値を取得するには<su:authorEmail、次のソースから

<item>
  <title>My important article</title>
  <pubDate>Mon, 29 Feb 2017 00:00:00 +0000</pubDate>
  <link>https://myxmlsource.com/32984</link>
  <guid>https://myxmlsource.com/32984</guid>
  <author>Blogs, Jo</author>
  <su:departments>
    <su:department>Human Affairs</su:department>
  </su:departments>
  <su:authorHash>4f329b923419b3cb2c654d615e22588c</su:authorHash>
  <su:authorEmail>hIwW14tLc+4l/oo7agmRrcjwe531u+mO/3IG3xe5jMg=</su:authorEmail>
  <dc:identifier>/32984/Download/0032984-11042.docx</dc:identifier>
  <dc:format>Journal article</dc:format>
  <dc:creator>Blogs, Jo</dc:creator>
  <slash:comments>0</slash:comments>
</item>

次のコードを使用します。

$rss = new DOMDocument();

$rss->load('https://myxmlsource.com/rss/xml');

$nodes = $rss->getElementsByTagName('item');

foreach ($nodes as $node) {
    $title = $node->getElementsByTagName('title')->item(0)->nodeValue;
    $author = $node->getElementsByTagName('author')->item(0)->nodeValue;
    $authorHash = $node->getElementsByTagName('authorHash')->item(0)->nodeValue;
    $department = $node->getElementsByTagName('department')->item(0)->nodeValue;
    $email = decryptEmail($node->getElementsByTagName('authorEmail')->item(0)->nodeValue);
}
于 2017-08-04T08:10:42.627 に答える