在 Zillow 和其他 API 网站中解析 XML 数据
Posted
技术标签:
【中文标题】在 Zillow 和其他 API 网站中解析 XML 数据【英文标题】:Parsing XML data in Zillow and other API websites 【发布时间】:2013-02-02 14:40:01 【问题描述】:我有下面的代码从 zillow.com 的 url 字符串中提取数据(例如)。由于隐私和安全原因,zws-id 未粘贴到 url 字符串中,但页面会正确返回州、城市和社区的所有 api xml 数据。问题是如何提取特定数据而不是所有数据。
<?php
$url = "http://www.zillow.com/webservice/GetDemographics.htm?zws-id=<my_api_id>&state=WA&city=Seattle&neighborhood=Ballard";
echo json_encode(simplexml_load_string(file_get_contents($url)));
?>
这会返回一个充满数据的页面,并且显然是混乱的,因为它没有被解析或以任何方式组织。
返回内容的一小段摘录:"state":"Washington","city":"Seattle","neighborhood":"Ballard","latitude":"47.668328","longitude":"-122.384536",...
我将如何解析这个并得到我需要的东西?如果我只想要纬度,我怎么能使用$.parseJSON(data)
或正确的语法来拉出那个特定的项目(纬度)?
当然,我知道那是 WAY... 但我在 API、xml、json 方面是全新的,我不知道是否有标准的方法来做到这一点,或者它是否特定于公司我正在使用 API。
Zillow.com 提供诸如“示例 API 输出”之类的信息,就像我见过的其他一些网站一样,但我将如何利用这些信息?它是否有益,因为它显示了每个项目将被调用的标签? http://www.zillow.com/howto/api/GetDemographics.htm
只是一个简单的跳跃开始就会有很大帮助。谢谢!
【问题讨论】:
您提供的 URLhttp://www.zillow.com/webservice/GetDemographics.htm?zws-id=zwsid&state=WA&city=Seattle&neighborhood=Ballard
确实提供了干净的 XML(和 提示该 URL 不完整)。请检查。
它工作正常,但我不想公开发布我的 zws-id。谢谢!
我可以理解,但也许您应该注意,由于私有凭据,您无法显示完整的 URI,然后提供一个示例输出您实际获得的内容,因此更清楚您的问题出在哪里.我会假设你在那里得到了一些带有 JSON 的 XML,但我不能尝试我自己的,所以我不能告诉你这是否有效。请改进您的问题,使其更加清晰,并提供一些手头的实际数据(至少是示例性数据),以便您的问题更加清晰。
【参考方案1】:
希望对你有所帮助。
在 PHP 中处理代码:
我注意到代码是从 PHP 开始的,所以让我从那里开始。如果您想查看 XML 对象在 PHP 中的样子,请使用 print_r()
,如下所示:
<?php
$url = "http://www.zillow.com/webservice/GetDemographics.htm?zws-id=<my_api_id>&state=WA&city=Seattle&neighborhood=Ballard";
$data = simplexml_load_string(file_get_contents($url));
print_r($data);
这应该会给你这样的结果:
SimpleXMLElement Object
(
[response] => Object
[region] => Object
[id] => WA,
[state] => Seattle,
[city] => Ballard,
[neighborhood] => Ballard,
[latitude] => 47.668304,
[longitude] => -122.384601
)
我已经截断了很多回复以使其更易于阅读。通过这样做,我可能已经从实际的 Zillow API 响应中弄乱了它,但希望它可以帮助你。因此,要从该响应中获取经度和纬度,您可以这样做:
<?php
$latitude = $data->response->region->latitude;
$longitude = $data->response->region->longitude;
用 Javascript 处理代码
您问题的第二部分包括 javascript 代码 $.parseJSON(data)
。要将代码从 PHP 转换为 Javascript,您必须像这样 echo
它:
<?php
$url = "http://www.zillow.com/webservice/GetDemographics.htm?zws-id=<my_api_id>&state=WA&city=Seattle&neighborhood=Ballard";
$data = json_encode(simplexml_load_string(file_get_contents($url)));
然后在您的 html 中执行:
<script>
var data = $.parseJSON('<?php echo $data ?>');
console.log(data); // you can look at the data in your browser console
</script>
希望对你有帮助!
【讨论】:
这个解释很清楚。我只是需要鸟瞰的方法。我是自学成才的,有时让球滚动起来是困难的部分。在那之后,多亏了像你这样的人,这通常是一个平稳的过渡!非常感谢您抽出宝贵的时间。以上是关于在 Zillow 和其他 API 网站中解析 XML 数据的主要内容,如果未能解决你的问题,请参考以下文章