6

我有下面的代码从 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

只是一个简单的跳跃开始就会有很大帮助。谢谢!

4

1 回答 1

4

我希望这能够帮到你。

在 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>

我希望这会有所帮助!

于 2013-03-22T22:41:28.133 回答