如何从一个父元素的多个 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 />';
}
}
我有来自供应商的 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 />';
}
}