如何使用PHP在Web上解析XML?
这是example XML。你如何获得第一个" AskRealtime"?
的价值我知道SimpleXML。我正在寻找合适的代码来打开XML网页,并使用SimpleXML来处理它。
此建议的代码无法成功加载页面:
$xml = @simplexml_load_file("http://query.yahooapis.com/v1/public/yql?q=select%20symbol%2C%20AskRealtime%20from%20yahoo.finance.quotes%20where%20symbol%20in%20(%22A%22%2C%22AA%22)&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys");
$price = $xml->results->quote[0]->AskRealtime;
echo $price;
答案 0 :(得分:2)
第1步。 - 在SimpleXML $xml = @simplexml_load_file($fl) or die($errorMsg);
中加载文件,其中$ fl是文件URL,$ errorMsg是要显示的错误消息。
第2步。 - 获取内容$whatever=$xml->results->quote->AskRealtime[0];
解释:它转到XML,然后命名为"结果",然后命名"引用",然后命名为AskRealtime,但是它的第一个(索引0)。
还有一张便条:如果出于某种原因,你必须得到一些名为whatever-else的东西(所以它的名字中有 - ),那么它只能起作用如果您创建代码$xml->{'whatever-else'}
答案 1 :(得分:2)
您是否尝试过使用SimpleXMLElement?它的工作方式与您的代码类似,但构造方式不同。
$url = 'http://query.yahooapis.com/v1/public/yql?q=select%20symbol%2C%20AskRealtime%20from%20yahoo.finance.quotes%20where%20symbol%20in%20(%22A%22%2C%22AA%22)&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys';
$xml = new SimpleXMLElement($url, null, true);
echo $xml->results->quote[0]->AskRealtime;
获取文件内容有不同的方法,即使我怀疑这是问题。
/* cURL */
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$contents = curl_exec($curl);
curl_close($curl);
/* Alternative */
$contents = file_get_contents($url);
你能说出你得到的错误是什么吗?或者尝试var_dump($xml)
并查看它返回的内容。
答案 2 :(得分:0)
使用可以使用一些HTTP请求库来获取文件,例如:http://www.php.net/manual/en/function.http-get.php
然后将响应提供给SimpleXML。