如何从一个父元素的多个 XML 子元素中获取所有值

How to get all values from multiple XML child element for one parent element

我有来自供应商的 XML 文件。我想从那个文件中读取数据。我的 read.php 文件包含:

$xml = simplexml_load_file('export.xml');
$result = $xml->xpath("//product");
$array= array();
    foreach ($result as $product) {
        $id = (string)$product->id;
        $code = (string)$product->code;
        $ean = (string)$product->combinations->combination->ean;
        $quantity = (string)$product->combinations->combination->quantity;
        print_r('ID:' .$id. ' CODE:' .$code. ' EAN: '.$ean.' - <b>'.$quantity.'</b> szt.<br />');
}

XML看起来像

<product>
  <id>684</id>
  <code>113</code>
    <combinations>
        <combination>
            <ean>111</ean>
            <quantity>0</quantity>
        </combination>
        <combination>
            <ean>222</ean>
            <quantity>5</quantity>
        </combination>
        <combination>
            <ean>333</ean>
            <quantity>2</quantity>
        </combination>
    </combinations>
</product>

它工作得很好,但 throw 只是第一个组合

ID:684 CODE:113 EAN: 111 - 0 szt.

但我还想要这个 ID 的其他组合

ID:684 CODE:113 EAN: 222 - 5 szt.
ID:684 CODE:113 EAN: 333 - 2 szt.

在哪里可以找到解决方案?

简单地添加一个 foreach $product->combinations->combination。

例如:

$xml = simplexml_load_file('export.xml');
$result = $xml->xpath("//product");
$array= array();
    foreach ($result as $product) {
        $id = (string)$product->id;
        $code = (string)$product->code;
        foreach( $product->combinations->combination as $combination ){

            $ean = (string)$combination->ean;
            $quantity = (string)$combination->quantity;
            print 'ID:' .$id. ' CODE:' .$code. ' EAN: '.$ean.' - <b>'.$quantity.'</b> szt.<br />';
        }
}