xml解析错误,使用php的asxml()

时间:2013-02-16 21:36:51

标签: php error-handling xml-parsing

$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”。我正在搜索这几个小时,找不到解决方案。我太近了。

1 个答案:

答案 0 :(得分:0)

$row = simplexml_load_string($post->asXML());,如果有效,将是一种冗长的写作方式$row = $post->asXML()simplexml_load_string相互执行相反的操作,因此您可以获得与之相同的对象。

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

我怀疑你遇到的原始问题(这条线似乎神奇地修复了)也是名称空间,因为XPath对它们非常敏感。查看使用registerXPathNamespace的示例,看看它们是否可以解决您的问题。如果没有,请随时发布一个显示原始问题的后续问题,并提供您正在处理的XML样本。