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分钟前编辑后阅读了它吗?