0

次のようなものを返す 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>

そして、返された URL にあるチャート画像を表示する必要がありますが、どうすればよいでしょうか?!?
ありがとうございました!

4

3 に答える 3

2

simple_xmlを使用できます:

$x = simplxml_load_string($xml);
echo '<img src="' . htmlspecialchars($x->response->url) . '">';
于 2009-07-10T07:26:12.567 に答える
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\">";
}

simplexmlもあります

$doc = simplexml_load_string($xml);
$url = htmlentities($doc->response->url);
echo "<img src=\"$url\">";

投稿した XML は無効であることに注意してください&。URL 内の文字は、&amp;これらの XMLDOM メソッドが正しく機能するためのものでなければなりません。しかし、これは少なくとも XML を「適切に」操作する方法を示しています。

したがって、より簡単なアプローチは、正規表現でURLを切り取ることです

if (preg_match('{<url>(.*?)</url>}', $xml, $matches))
{
     $url=htmlentities($matches[1]);
     echo "<img src=\"$url\">";
} 
于 2009-07-10T07:23:26.037 に答える