Проблемы при импорте XML с помощью Laravel Package orchestral/parser

У меня есть этот XML, который я пытаюсь импортировать:

    <products>
<product product_id="62" title="Product Title" description="<p>desc</p>" price="40" brand="" weight="100" in_stock="Y"/>
<product product_id="63" title="Product Title" description="<p>desc</p>" price="40" brand="" weight="100" in_stock="Y"/>
</products>

Я использую Laravel 5 и этот пакет: https://github.com/orchestral/parser

Итак, я запускаю этот код:

    $xml = XmlParser::load('https://www.url/feed.xml');


    $product = $xml->parse([
    'product_id' => ['uses' => 'product::product_id'],
    'title' => ['uses' => 'product::title'],
    'description' => ['uses' => 'product::description'],
]);
    dd($product);

Но он просто возвращает один продукт в массиве, который даже не является первым или последним в XML. Так что я немного запутался.

У кого-нибудь есть идеи?

Благодарю.

2 ответа

Решение

В итоге я сделал:

$xml = XmlParser::load('https://www.url/feed.xml');
$products = $xml->getContent();

foreach($products as $product) {

$item->title = $product['title'];
$item->save();
}

Вы можете попробовать "simplexml_load_string()" на Laravel.

Когда вы используете эту функцию для разбора XML-файла, вам не нужно включать другой плагин в ваш проект Laravel.

Ссылка: http://www.w3schools.com/php/func_simplexml_load_string.asp

Например:

$test_strting="<posts>
                   <post>
                       <title>Title1</title>
                   </post>
                   <post>
                       <title>Title2</title>
                   </post>
               </posts>";

$xml = simplexml_load_string($test_strting);

foreach ($xmltest->post as $key => $value) 
{
    $title = (string) $value->title;
    echo("Title: ".$title);
}
Другие вопросы по тегам