使用 Laravel 的管弦乐队解析器解压缩包含列表的嵌套 XML



我想解析一个包含图片列表的包列表。然而,我可以得到第一个元素,但不能得到完整的数组。我使用的解析器是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"
}
....
}

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

谢谢!

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

在我的案例中,解决方案是:

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

最新更新