使用Laravel Package orchestral / parser导入XML的问题

时间:2015-11-26 17:24:59

标签: xml laravel laravel-5

我有这个我试图导入的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 个答案:

答案 0 :(得分:5)

我最终做的是:

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

foreach($products as $product) {

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

答案 1 :(得分:0)

您可以尝试&#34; simplexml_load_string()&#34;在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);
}