Php 为什么我';我只从XML中获取部分数据?

Php 为什么我';我只从XML中获取部分数据?,php,xml,simplexml,Php,Xml,Simplexml,我有这个剧本: <?php $map_url = 'http://example.com/data.xml'; if (($response_xml_data = file_get_contents($map_url)) === false) { echo "Error fetching XML\n"; } else { libxml_use_internal_errors(true); $data = simplexml_load_string($response_x

我有这个剧本:

<?php
$map_url = 'http://example.com/data.xml';
if (($response_xml_data = file_get_contents($map_url)) === false) {
    echo "Error fetching XML\n";
} else {
   libxml_use_internal_errors(true);
   $data = simplexml_load_string($response_xml_data);
   if (!$data) {
       echo "Error loading XML\n";
       foreach(libxml_get_errors() as $error) {
           echo "\t", $error->message;
       }
    } else {
        echo $data->offer->offerName;
        echo "<br><br>";
        echo $data->offer->links->link['href'];
        echo "<br><br>";
        echo $data->offer->thumbnail['image'];
    }
}
?>

它从XML加载内容,类似于:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Result xmlns="urn:buscape"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://example.com/admin/lomadee.xsd">
    <offer categoryId="2493" id="104951929015047">
        <offerName>BIQUINI BASICO AVELA</offerName>
        <links>
            <link url="http://example.com/hello" type="offer"/>
        </links>
        <thumbnail url="http://example.com/hello.jpg"/>
        <price>
        ...

比奎尼巴西科阿维拉酒店
...
我需要从表格中获取内容:

<offerName>
<link>
<thumbnail>

但我只能从
获取内容。换句话说,我需要得到标题、图片和链接,但我只得到标题


我做错了什么?

首先,您没有循环遍历元素,但根据您的评论,这是您的意图。要执行此操作,请在
$data->offer
上执行
foreach

什么是
$data->offer->缩略图['image']
?在
缩略图
元素中,我没有看到任何
图像
,只有
url
属性。如果要从元素中获取属性,请按如下方式使用
attributes()

$offer->thumbnail[0]->attributes()->url;
至于链接,SimpleXML无法知道您正在访问哪一个链接(并且不希望知道只有一个元素)。使用数组索引访问不同的元素:

$offer->links[0]->link[0];
或者,如果您特别需要URI:

$offer->links[0]->link[0]->attributes()->url;
最终代码:

foreach($data->offer as $offer)
{
    $title = (string)$offer->offerName;
    $thumbnail = $offer->thumbnail[0]->attributes()->url;
    $uri = $offer->links[0]->link[0]->attributes()->url;
}

$data是xml中的主表,它被称为“Result”,然后数组序列是这样的:-->----您可以在这里看到xml:缩略图工作了,但链接没有。顺便问一下,为什么它只显示一个结果?@user3692451:我编辑了我的答案。至于您只看到第一个结果的事实,这是因为您从不循环代码中的元素我仍然只能得到标题。啊,我正试图从缩略图表达式创建一个图像,但它看起来没有正确关闭
echo“offer->thumbnail->attributes()->url.\“/>”;
@user3692451:您评论中的代码与我的答案无关。您确定在20分钟前编辑后阅读了它吗?