34 lines
907 B
PHP
34 lines
907 B
PHP
<?php
|
|
declare(strict_types=1);
|
|
|
|
namespace App\BusProNet\XmlParser;
|
|
|
|
use App\BusProNet\Model\BaseData;
|
|
use App\BusProNet\Model\Product;
|
|
use Symfony\Component\DomCrawler\Crawler;
|
|
|
|
class ProductsParser extends AbstractParser
|
|
{
|
|
public function parse(Crawler $result): BaseData
|
|
{
|
|
$products = [];
|
|
|
|
$result
|
|
->filterXPath('//produkte/produkt')
|
|
->each(function (Crawler $node) use (&$products) {
|
|
$code = $node->attr('code');
|
|
if (null !== $code && '' !== $code) {
|
|
$product = new Product();
|
|
$product->id = (int) $node->attr('id');
|
|
$product->code = $code;
|
|
$product->name = (string) $node->attr('bezeichnung');
|
|
|
|
$products[$product->id] = $product;
|
|
}
|
|
})
|
|
;
|
|
|
|
return new BaseData($products);
|
|
}
|
|
}
|