xml解析错误,使用php';s asxml()

xml解析错误,使用php';s asxml(),php,error-handling,xml-parsing,Php,Error Handling,Xml Parsing,我使用这个脚本来解析atom提要。起初不起作用,因为它无法正确传递链接的href属性。我添加了$row,尽管它有效,但它给出了一个错误:“未定义条目上etag的名称空间前缀gd”。我搜索了几个小时,找不到解决方案。我是如此接近。行$row=simplexml\u load\u string($post->asXML()),它能工作的话,将是一种冗长的书写方式$row=$post->asXML()和simplexml\u load\u string彼此执行相反的操作,这样您就可以返回开始使用的相同

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

$row=simplexml\u load\u string($post->asXML()),它能工作的话,将是一种冗长的书写方式
$row=$post
->asXML()
simplexml\u load\u string
彼此执行相反的操作,这样您就可以返回开始使用的相同对象

我认为,在您的例子中,它的行为异常的原因是您的XML文档使用了“名称空间”,而由
$post->asXML()
生成的XML片段本身并不能作为XML文档工作

我怀疑您最初遇到的问题,这一行似乎神奇地解决了,也是名称空间的问题,因为XPath对名称空间相当敏感。查找使用
registerXPathNamespace
的示例,看看它们是否解决了您的问题。如果不是,请随意发布一个后续问题,显示您的原始问题,并包括您正在处理的XML示例

$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'];