PHP从XML中检索数据
我第一次尝试从XML中为地图应用程序检索数据失败。这是一个XML Feed。PHP从XML中检索数据
<?xml version="1.0" encoding="UTF-8"?>
<DirectionsResponse>
<status>OK</status>
<route>
<leg>
<start_address>Winkfield, Bracknell, Berkshire RG42 6LY, UK</start_address>
<end_address>Wentworth, Surrey GU25 4, UK</end_address>
</leg>
</route>
</DirectionsResponse>
我想获取开始和结束地址,并通过AJAX将它们返回给应用程序。
的PHP
<?php
$start = $_POST['start'];
$end = $_POST['end'];
$xml = simplexml_load_file('http://maps.googleapis.com/maps/api/directions/xml?origin='.$start.'&destination='.$end.'&sensor=false');
// data to fetch
$start = $xml->xpath("/DirectionsResponse/route/leg/start_address");
$end = $xml->xpath("/DirectionsResponse/route/leg/end_address");
$start = array($start);
// output
echo json_encode(array('output'=>$start[0]));
?>
烦人,这是返回一个对象的页面。
响应:: {"output":[{"0":"Winkfield, Windsor, Berkshire SL4 2ES, UK"}]}
任何人都知道如何阻止这种情况发生。我只想要价值Winkfield,温莎,伯克希尔SL4 2ES,英国。
没有测试您的具体情况,但我记得运行到类似的东西使用SimpleXML时,您可能需要使用(字符串)投出来的对象
array('output'=> (string)$start[0])
或者说只是离开了$启动=阵列($开始),只是做
array('output'=> (string)$start)
在阅读SimpleXML的XPath文档(http://www.php.net/manual/en/simplexmlelement.xpath.php)再次,我认为你的问题可能是这样的:
Returns an array of SimpleXMLElement objects or FALSE in case of an error.
因此,XPath返回一个数组,那么你包在一个数组,并采取数组的第一个元素,所以你最终得到的是原始数组 - 删除阵列包装和你应该罚款
echo $xml->route->leg->start_address;
这是编辑的答案。我检查了它。它在XML上正常工作。
加载xml文件后使用此代码。你不需要XPATH行。 – 2011-05-30 13:06:01
只是echo $ start?另外,为什么你做了一组开始,然后输出第一个元素,它根本没有任何意义。
这不起作用。这是我开始的 – 2011-05-30 13:04:35
function XMLReader()
{
$MyArray = array();
$doc = new DOMDocument();
$doc->load('XMLFilePath.xml');
$info = $doc->getElementsByTagName("leg");
foreach($info as $Type)
{
$details = $Type->getElementsByTagName("start_address");
$detail = $details->item(0)->nodeValue;
$MyArray [] = $detail;
}
return $MyArray;
}
and end for end_Address。 我希望这个答案是有帮助的。
可以显示$ start的print_r; – jimy 2011-05-30 12:59:34
用手做。例如。 'echo':{'start':'$ start','end':'$ end'}}“;' – Nemoden 2011-05-30 13:02:35
我想他意味着他想用'{”输出“:” Winkfield,Windsor,Berkshire SL4 2ES,英国“} – 2011-05-30 13:02:38