$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”。我正在搜索这几个小时,找不到解决方案。我太近了。
答案 0 :(得分:0)
行$row = simplexml_load_string($post->asXML());
,如果有效,将是一种冗长的写作方式$row = $post
。 ->asXML()
和simplexml_load_string
相互执行相反的操作,因此您可以获得与之相同的对象。
我认为它在你的情况下表现奇怪的原因是你的XML文档使用“命名空间”,而$post->asXML()
生成的XML片段本身并不能完全用作XML文档。 / p>
我怀疑你遇到的原始问题(这条线似乎神奇地修复了)也是名称空间,因为XPath对它们非常敏感。查看使用registerXPathNamespace
的示例,看看它们是否可以解决您的问题。如果没有,请随时发布一个显示原始问题的后续问题,并提供您正在处理的XML样本。