【问题标题】:Unpacking a nested XML containing a list with Laravel's orchestra parser使用 Laravel 的 Orchestra 解析器解压包含列表的嵌套 XML
【发布时间】:2021-07-12 06:38:43
【问题描述】:

我想解析一个包含图片列表的包列表。但是我能够获得第一个元素,但不能获得完整的数组。我使用的解析器是 Laravel 的 Orchestra。

要解压的 XML:

<Packages>
<Package>
  <Pictures>
    <P>20205520574081..jpg</P>
    <P>20205520574701.jpg</P>
    <P>20205520575172.jpg</P>
    <P>20205520575483.jpg</P>
    <P>20205520575955.jpg</P>
    <P>20205520576426.jpg</P>
    <P>20205520576897.jpg</P>
    <P>20205520577368.jpg</P>
    <P>20205520577989.jpg</P>
  </Pictures>
</Package>
<Package>
  <Pictures>
    <P>20205520574081..jpg</P>
    <P>20205520574701.jpg</P>
    <P>20205520575172.jpg</P>
    <P>20205520575483.jpg</P>
    <P>20205520575955.jpg</P>
    <P>20205520576426.jpg</P>
    <P>20205520576897.jpg</P>
    <P>20205520577368.jpg</P>
    <P>20205520577989.jpg</P>
  </Pictures>
</Package>

我的提取码:

$OfferSummary = $xml->parse([
        'Images' => ['uses' => 'Packages.Package.Picture[P]'],   
    ]);

我的结果:

 ["Images"]=>
     array(1) {
        [0]=>
           array(1) {
              ["P"]=>
              string(19) "20205520574081..jpg"
          }
        ....
 }

请注意,只返回图片标签的第一个元素,我需要整个元素数组。

谢谢!

【问题讨论】:

    标签: laravel xml-parsing


    【解决方案1】:

    我遇到了类似的问题。我的 XML 有一个列表,其中每个子节点都有一个名称属性。就我而言,我在这里找到了答案:https://github.com/orchestral/parser/blob/master/tests/Feature/DocumentTest.php#L52

    在我的情况下,解决方案是:

     $parser = $xml->parse([
                'products' => ['uses' => 'products.product[attributes.attribute_group.value(::name=@)]'],
            ]);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多