[英]PHP Retrieve DATA from XML
我第一次嘗試從 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]));
?>
令人討厭的是,這會將 object 返回到頁面。
響應:: {"output":[{"0":"Winkfield, Windsor, Berkshire SL4 2ES, UK"}]}
任何人都知道如何阻止這種情況發生。 我只想要價值 Winkfield, Windsor, Berkshire SL4 2ES, UK。
尚未測試您的具體情況,但我記得在使用 SimpleXML 時遇到類似的情況,您可能想使用 (string) 將其從 object
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 返回一個數組,然后你將它包裝在一個數組中並獲取該數組的第一個元素,所以你最終得到的是原始數組 - 刪除數組包裝,你應該沒問題
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 相同。 我希望這個答案是有幫助的。
echo $xml->route->leg->start_address;
這是編輯后的答案。 我檢查了它。 它在 XML 上正常工作。
只是回聲 $start? 另外,為什么要創建一個數組 start 然后 output 是第一個元素,這根本沒有任何意義。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.