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);*/


?>

私が得た最初の問題:

フィールド「name」には、異なる言語であるxmlにいくつかの子が含まれているため、ノードをナビゲートするループで、子を持つ子に「入り」たいと思います...実際には名前i " echo"は空ですが、xmlを見ると<name>、2つの異なる言語の名前が含まれている2つのノードが表示されます。今のところこれですべてです。後で質問をどんどん投稿します:D

前もって感謝します!

4

1 に答える 1

0

子を持つSimpleXMLElementを参照しています(http://php.net/manual/en/class.simplexmlelement.php)。この場合、languagesという名前の子があります。

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 に答える