2017-10-19 100 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