我正在进行API调用,应该返回类似以下的内容,
<?xml version="1.0" encoding="utf-8" ?>
<Chart:chart xmlns:Chart="http://www.zillow.com/vstatic/3/static/xsd/Chart.xsd">
<request>
<zpid>48749425</zpid>
<unit-type>percent</unit-type>
<width>300</width>
<height>150</height>
</request>
<message>
<text>Request successfully processed</text>
<code>0</code>
</message>
<response>
<url>http://www.zillow.com/app?chartDuration=1year&chartType=partner&height=150& page=webservice%2FGetChart&service=chart&showPercent=true&width=300&zpid=48749425</url>
</response>
</Chart:chart>
我需要的是显示返回网址的图表图片,但我该怎么做?!?
谢谢!
答案 0 :(得分:2)
您可以使用simple_xml:
$x = simplxml_load_string($xml);
echo '<img src="' . htmlspecialchars($x->response->url) . '">';
答案 1 :(得分:0)
给定变量$ xml中的XML数据,您可以解析它并使用XMLDOM函数输出<img>
标记:
$doc = new DOMDocument();
$doc->loadXML($xml);
$nodes = $doc->getElementsByTagName("url");
if ($nodes->length>0)
{
$node=$nodes->item(0);
$url=htmlentities($node->nodeValue);
echo "<img src=\"$url\">";
}
您也可以使用XPath
$doc = new DOMDocument();
$doc->loadXML($xml);
$xpath = new DOMXPath($doc);
$nodes = $xpath->evaluate('Chart/response/url');
if ($nodes->length>0)
{
$node=$nodes->item(0);
$url=htmlentities($node->nodeValue);
echo "<img src=\"$url\">";
}
$doc = simplexml_load_string($xml);
$url = htmlentities($doc->response->url);
echo "<img src=\"$url\">";
请注意,您发布的XML无效 - 网址中的&
字符应为&
,以使这些XMLDOM方法正常运行。但这至少说明了如何“正确”使用XML
所以,一个更简单的方法就是用正则表达式删除url
if (preg_match('{<url>(.*?)</url>}', $xml, $matches))
{
$url=htmlentities($matches[1]);
echo "<img src=\"$url\">";
}
答案 2 :(得分:0)
谢谢你让我走正确的路。我不知道为什么我无法使用load_string函数..?
这是我用过的,它有用,你知道为什么吗?
<?php
$xml = 'http://www.zillow.com/webservice/GetChart.htm?zws-id=******&unit-type=percent&
zpid='.$title->zpid.'&width=300&height=150';
$chart = simplexml_load_file($xml);
echo '<img src="' .$x->chart->url . '">';
?>