我第一次尝试从地图应用程序的XML检索数据失败了。这是XML Feed的一部分。
<?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,Windsor,Berkshire SL4 2ES,UK。
答案 0 :(得分:3)
没有测试过你的特定情况,但我记得在使用SimpleXML时碰到类似的东西,你可能想用(字符串)把它从对象中抛出来
array('output'=> (string)$start[0])
或者只是省略$ start = array($ start)而只是做
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返回一个数组,然后你将它包装在一个数组中并获取该数组的第一个元素,所以你最终得到的就是原始数组 - 删除数组包装你应该没问题
答案 1 :(得分:1)
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;
}
和end_Address相同。 我希望这个答案很有帮助。
答案 2 :(得分:0)
echo $xml->route->leg->start_address;
这是经过编辑的答案。我检查了一下。它在XML上正常工作。
答案 3 :(得分:0)
只需回显$ start?另外,为什么要创建一个start数组然后输出第一个元素,它根本没有任何意义。