簡體   English   中英

PHP 從 XML 檢索數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM