I have been trying extract the node data's children using a foreach loop. I can get the main node data without problems, but the child data only gets the first data set then repeats. can someone maybe tell me what i am doing wrong? I got the example going from the offical documentation: http://php.net/manual/en/simplexmlelement.children.php
This is my test xml
<Result>
<Result_Data>
<Root_XML>
<Stock>
<Stock_Code>28</Stock_Code>
<Barcode>28</Barcode>
<Multiple_Barcodes>
<Barcode>BARCODE1</Barcode>
<Barcode>BARCODE2</Barcode>
</Multiple_Barcodes>
<Sell_Prices>
<Sell_Price>
<Inclusive>10</Inclusive>
<Exclusive>8.77193</Exclusive>
</Sell_Price>
<Sell_Price>
<Inclusive>0</Inclusive>
<Exclusive>0</Exclusive>
</Sell_Price>
<Sell_Price>
<Inclusive>0</Inclusive>
<Exclusive>0</Exclusive>
</Sell_Price>
</Sell_Prices>
<New_Prices>
<New_Price>0</New_Price>
<New_Price>0</New_Price>
<New_Price>0</New_Price>
<New_Price>0</New_Price>
</New_Prices>
<Work_In_Progress_Quantity>0</Work_In_Progress_Quantity>
<Extended_Description />
<Onhand>0</Onhand>
</Stock>
<Stock>
<Stock_Code>123</Stock_Code>
<Barcode>123</Barcode>
<Multiple_Barcodes>
<Barcode>BARCODE123</Barcode>
<Barcode>BARCODE124</Barcode>
</Multiple_Barcodes>
<Sell_Prices>
<Sell_Price>
<Inclusive>10</Inclusive>
<Exclusive>8.77193</Exclusive>
</Sell_Price>
<Sell_Price>
<Inclusive>0</Inclusive>
<Exclusive>0</Exclusive>
</Sell_Price>
<Sell_Price>
<Inclusive>0</Inclusive>
<Exclusive>0</Exclusive>
</Sell_Price>
</Sell_Prices>
<New_Prices>
<New_Price>0</New_Price>
<New_Price>0</New_Price>
<New_Price>0</New_Price>
<New_Price>0</New_Price>
</New_Prices>
<Work_In_Progress_Quantity>0</Work_In_Progress_Quantity>
<Extended_Description />
<Onhand>0</Onhand>
</Stock>
</Root_XML>
</Result_Data>
This is my php code
$file = file_get_contents('play.xml', true);
$XMLtoSAVE = new SimpleXMLElement($file);
foreach ($XMLtoSAVE->Result_Data->Root_XML->Stock as $element) {
echo $element->Stock_Code . "\n";
//Child Node Data - Barcode
foreach ($XMLtoSAVE->Result_Data->Root_XML->Stock->Multiple_Barcodes as $element) {
echo $element->Barcode . "\n";
}
}
This is the output:
28
BARCODE1
123
BARCODE1
Expected Output:
28
BARCODE1
BARCODE2
123
BARCODE123
BARCODE124
In the inner loop use foreach ($element->Multiple_Barcodes->Barcode as $barcode) { echo $barcode; }
.