0
$file = simplexml_load_file($url); {


    foreach($file->entry as $post) {


    $row = simplexml_load_string($post->asXML()); // after adding this line, i get error message

    $links = $row->xpath('//link[@rel="alternate" and @type="text/html"]');
    echo (string) $post->title;
    echo (string) $links[0]['href'];

我使用这个脚本来解析原子提要。起初不起作用,因为它无法正确传递链接的 href 属性。我添加了$row,即使它有效,它也会给出一个错误:“未定义条目上 etag 的命名空间前缀 gd”。我搜索了几个小时,找不到解决方案。我是如此接近。

4

1 回答 1

0

这条线$row = simplexml_load_string($post->asXML());,如果有效的话,将是一种冗长的写作方式$row = $post->asXML()simplexml_load_string彼此执行相反的操作,这样您就可以取回开始时的同一个对象。

我认为它在您的情况下表现异常的原因是您的 XML 文档正在使用“命名空间”,而生成的 XML 片段$post->asXML()本身并不能完全作为 XML 文档工作。

我怀疑您遇到的最初问题(这条线似乎神奇地解决了)也与名称空间有关,因为 XPath 对它们相当敏感。查找使用示例,registerXPathNamespace看看它们是否能解决您的问题。如果没有,请随时发布后续问题,展示您的原始问题,并包括您正在处理的 XML 示例。

于 2013-02-16T21:56:47.037 回答