在Zillow和其他API网站中解析XML数据

5
我已经成功运行了下面的代码,从zillow.com的url字符串中提取数据(以zws-id为例)。由于隐私和安全原因,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)或正确的语法来提取这个特定的项目(纬度)?

当然我知道那太离谱了...但我对API、xml、json的协同工作还是很陌生的,我不知道是否有标准的方法来做这个,或者它是特定于我正在使用API的公司的。

Zillow.com提供了诸如“示例API输出”之类的信息,就像我见过的其他一些网站一样,但我该如何利用这些信息呢?它有益吗,因为它显示了每个项目的标签名称?http://www.zillow.com/howto/api/GetDemographics.htm

一个简单的起点会帮助很多。谢谢!


您提供的URL http://www.zillow.com/webservice/GetDemographics.htm?zws-id=zwsid&state=WA&city=Seattle&neighborhood=Ballard 提供了干净的XML(并且暗示URL不完整)。请检查。 - hakre
它运行良好,但我不想公开发布我的zws-id。谢谢! - LITguy
1
我能理解,但或许你应该注意因为私有凭据你不能显示完整的URI,然后提供一个实际输出的示例,这样更清楚你的问题所在。我猜你会得到一些包含JSON的XML,但我无法尝试我的,所以我不能告诉你是否有效。请改进你的问题,使其更清晰,并提供一些实际的数据来处理(至少提供示例数据),以便你的问题变得更加明确。 - hakre
1个回答

4

希望这能帮助你。

处理 PHP 代码:

我注意到代码以 PHP 开始,所以让我从那里开始。如果你想要在 PHP 中查看 XML 对象的样子,可以使用 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>

我希望你能受益!

这是一个非常清晰的解释。我只需要一个总体的方法概述。我是自学的,有时候开始动手是最困难的部分。之后,通常都会很顺利,多亏了像你这样的人!非常感谢你抽出时间来帮助我。 - LITguy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接