简单的XML – 处理节点中的冒号

我试图从Flickr阅读RSS提要,但它有一些简单的XML( media:thumbnailflickr:profile等)无法读取的节点。

我如何绕过这个? 当我看DOM的文档时,我的头痛了。 所以我想避免它,因为我不想学习。

我试图顺便得到缩略图。

解决scheme在这个不错的文章中解释。 您需要使用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; } 

你正在处理一个命名空间? 我认为你需要使用 – >子方法。

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

你能提供一个与XML声明片段吗?

使用最新版本,您现在可以使用大括号引用冒号节点。

 $item->{'itunes:duration'} 

使用PHP访问命名空间XML节点而不声明命名空间的更简单的方法是…

为了从以下来源获得<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); }