2017-10-19 101 views
-3

我想從CakePHP的XML數據中獲得特定的值。這是我到目前爲止:CakePHP,從xml中獲取價值

在控制器中做print_r($ output)之後,這就是我所得到的;

<?xml version="1.0" encoding="UTF-8"?> 
<response> 
    <xmlArray> 
    <numbers>52619657</numbers> 
    </xmlArray> 
</response> 

因爲我不知道如何直接從XML得到它,所以我把它轉換成數組控制器cakePHP doc提。

$xmlArray = Xml::toArray(Xml::build($out)); 

print_r($ xmlArray);的結果;是

Array 
(
    [response] => Array 
     (
      [xmlArray] => Array 
       (
        [numbers] => 52619657 
       ) 
     ) 
) 

我試圖得到數字'52619657'。所以我的嘗試是

print_r ($xmlArray['numbers']); 

但它不起作用(錯誤是未定義的索引:)。所以我嘗試使用IN方法,如here,但實際上我不知道該怎麼做。我如何獲得編號'52619657'?在蛋糕PHP。

謝謝你這麼多

+1

因爲是一個嵌套數組,你必須做$ xmlArray ['response'] ['xmlArray'] ['numbers']' – arilia

+1

您正在鏈接到CakePHP 1.3文檔,但您顯然沒有使用CakePHP 1.3 ,因爲那裏不存在這樣的方法。另外,關於「IN」的鏈接問題指的是查詢生成器,這是完全不同的。 – ndm

回答

2

我不明白你爲什麼會需要一個第三方庫,像這塊蛋糕的XML類。你可以用SimpleXML很容易做到這一點:

$response = simplexml_load_string($output); 
echo $response->xmlArray->numbers; 

你的方法是行不通的,因爲你的$xmlArray是一個嵌套的數組和做$xmlArray['numbers']將嘗試從第一級提取。您需要使用$xmlArray['response']['xmlArray']['numbers'];瞭解如何讀取數組是基本知識,因此請考慮在PHP手冊中重新閱讀這部分內容。

+2

btw,CakePHP [**'Xml :: build()**](https://api.cakephp.org/2.10/class-Xml.html#_build)默認返回一個'SimpleXMLElement'對象,它是隻是一個抽象處理各種類型的輸入(字符串,數組,URL)以及諸如禁用加載外部實體的東西的便利包裝器。 – ndm

+0

非常感謝你@戈登,它確實有效! – akpackage