1

I am using SimpleXML to parse through a cXML document. I can't figure out how to access an attribute from the deepest element in the document. When I parse for the attribute "currency" in the xml snippet below it doesn't exist. I figured out that this only occurs on the deepest elements. Is there a way that I can parse this document using SimpleXML?

Example portion of an XML document I am attempting to parse.

<ItemOut name="ItemOut">
<ItemDetail name="ItemDetail">
    <UnitPrice name="UnitPrice">
        <Money currency="USD">12.99</Money>
    </UnitPrice>
</ItemDetail>

I have tried using the json encode/decode way...

$simpleXml=simplexml_load_string($xml);
$json = json_encode($simpleXml);
$xmlArray = json_decode($json,TRUE);

and using SimpleXML object...
$xmlObject = new SimpleXMLElement($xml);

Here is a picture of the array structure of the parsed document.

IMSoP
  • 89,526
  • 13
  • 117
  • 169

1 Answers1

1

I think you need to run

<?php
$xmlObject = new SimpleXMLElement($xml);
$currency = $xmlObject-> ItemDetail -> UnitPrice -> Money -> attributes() -> currency;
?>

That will read your currency attribute and return EUR in your case

Frederic Henri
  • 51,761
  • 10
  • 113
  • 139