Пройдите XML-файл, чтобы найти продукты рекурсивно - PullRequest
0 голосов
/ 10 декабря 2018

enter image description here Я пытаюсь прочитать удаленный XML-файл, чтобы найти продукты в определенной категории.Я сталкиваюсь с проблемой, потому что у файла XML есть вложенные категории, и у каждой категории есть продукты.Мне нужна помощь в подготовке рекурсивной функции, которая будет выводить продукты из определенной категории по названию категории.Вот код, с которого я начал

<?php
    $xml = simplexml_load_file('https://www.deere.com/en/us-en.taxonomy');
    getProducts($xml);

    function getProducts($xml) {
        foreach ($xml as $obj) {
            if ($obj->getName() == 'en_us_tractors') { //if category name is en_us_tractors
                if ($obj->children()) {
                    foreach ($obj->children() as $child) {
                        echo '<h1>' . $child->name . '</h1>';
                        if ($child->products) {
                            foreach ($child->products as $product) {
                                foreach ($product as $p) {
                                    echo 'sku  is ' . $p->sku . '<br>';
                                    echo 'path  is ' . $p->path . '<br>';
                                }
                            }
                        }
                    }                       

                }


            }
        }
    }

1 Ответ

0 голосов
/ 10 декабря 2018

Использовать XPath для поиска данных очень просто, он находит все продукты в нужной категории ...

$xml = simplexml_load_file('https://www.deere.com/en/us-en.taxonomy');
$products = $xml->xpath("//en_us_tractors//products/*");
foreach ( $products as $product ){
        echo $product->sku."/".$product->path.PHP_EOL;
}
...