feat: refactoring of xml parsers
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
<?php
|
||||
|
||||
namespace App\BusProNet\XmlParser;
|
||||
|
||||
use App\BusProNet\Model\Pickup;
|
||||
use Symfony\Component\DomCrawler\Crawler;
|
||||
|
||||
class PickupsParser extends AbstractParser
|
||||
{
|
||||
public function parse(Crawler $result): array
|
||||
{
|
||||
$pickups = [];
|
||||
|
||||
$result->each(function (Crawler $node) use (&$pickups) {
|
||||
$pickupId = (int) $node->attr('idzustieg');
|
||||
$pickupDate = $node->attr('datum');
|
||||
$pickupTime = $node->attr('zeit');
|
||||
$price = $node->attr('preis') ? $this->stringToFloat($node->attr('preis')) : null;
|
||||
|
||||
$pickup = new Pickup();
|
||||
$pickup->id = $pickupId;
|
||||
$pickup->code = $node->attr('code');
|
||||
$pickup->city = $this->getStringOrNullValue($node->filterXPath('//ort'));
|
||||
$pickup->postalCode = $this->getStringOrNullValue($node->filterXPath('//plz'));
|
||||
$pickup->street = $this->getStringOrNullValue($node->filterXPath('//strasse'));
|
||||
$pickup->time = $this->stringToDateTime($pickupDate.' '.$pickupTime);
|
||||
$pickup->price = $price;
|
||||
$mapping = $this->stringToArray($node->attr('zuordnung'));
|
||||
$pickup->mapping = array_map('intval', $mapping);
|
||||
|
||||
$pickups[$pickupId] = $pickup;
|
||||
});
|
||||
|
||||
return $pickups;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user