0

美好的一天,我正在 prestashop 上启动一个 CRUD 应用程序,我想通过管理存储的程序启动的 php 应用程序使用 web 服务来更新、创建或删除产品、用户和订单。

我看过 prestashop 指南: http ://doc.prestashop.com/display/PS15/Using+the+PrestaShop+Web+Service

现在我正在努力把事情做好。

我实际上收到了一个代表产品结构的 xml:

<?php
// Here we define constants /!\ You need to replace this parameters
define('DEBUG', true);
define('PS_SHOP_PATH', 'http://www.server.com/prestashop/');
define('PS_WS_AUTH_KEY', 'blahblahbla');
require_once('./PSWebServiceLibrary.php');




    $webService = new PrestaShopWebservice(PS_SHOP_PATH, PS_WS_AUTH_KEY, DEBUG);
    $opt = array('resource' => 'products');
    $opt['id'] =1;

        $xml = $webService->get($opt);
        $resources = $xml->children()->children();



foreach ($resources as $nodeKey => $node)
    {

        echo $nodeKey . " : ". $resources->$nodeKey ."<br>";
    }


/*$opt = array('resource' => 'products');
$opt['putXml'] = $xml->asXML();
$opt['id'] = 1;
$xml = $webService->edit($opt);*/


?>

我遇到的第一个问题:

“名称”字段在 xml 中有一些子项,它们是不同的语言,因此,在我浏览节点的循环中,我想“进入”那些有孩子的人......因为实际上我的名字尝试“ echo”为空,但如果我看到 xml,我可以看到 2 个节点,<name>其中包含 2 种不同语言的名称。暂时就这些了,以后我会发布越来越多的问题:D

提前致谢!

4

1 回答 1

0

您正在引用一个有孩子的 SimpleXMLElement ( http://php.net/manual/en/class.simplexmlelement.php )。在这种情况下,它有子命名语言。

Array
(
    [name] => SimpleXMLElement Object
        (
            [language] => SimpleXMLElement Object
                (
                    [@attributes] => Array
                        (
                            [id] => 1
                        )

                )

        )

)

因此,您将访问如下。

if($resources->$nodeKey->children()){

    $children = false;
    foreach($resources->$nodeKey->children() as $child){
        $children[] = $child;
    }

    echo $nodeKey . " : [" . @implode(", ", $children) . "]<br>";
}
else    
    echo $nodeKey . " : ". $resources->$nodeKey ."<br>";

结果:

Array
(
    [name] => SimpleXMLElement Object
        (
            [language] => SimpleXMLElement Object
                (
                    [@attributes] => Array
                        (
                            [id] => 1
                        )

                )

        )

)
name : [iPod Nano]
于 2013-02-15T17:33:41.127 回答