SimpleXMLElement empty object

Posted by Mike on Stack Overflow See other posts from Stack Overflow or by Mike
Published on 2010-05-09T21:15:22Z Indexed on 2010/05/09 22:18 UTC
Read the original article Hit count: 219

Filed under:
|
|

Hi,

I am trying to parse an xml file using XmlReader but although I am getting a return from the xml file for the (commission) node for some reason I am getting an empty SimpleXMLElement Object returned as well. I don't know if its something to do with while loop,switch or something I missed in the parse setup.

This is the xml file I am trying to read from, as you can see there is only 1 result returned:

<?xml version="1.0" encoding="UTF-8"?>
<cj-api>
    <commissions total-matched="1">
        <commission>
            <action-status>
                new
            </action-status>
            <action-type>
                lead
            </action-type>
            <aid>
                10730981
            </aid>
            <commission-id>
                1021015513
            </commission-id>
            <country>
            </country>
            <event-date>
                2010-05-08T08:08:55-0700
            </event-date>
            <locking-date>
                2010-06-10
            </locking-date>
            <order-id>
                345007
            </order-id>
            <original>
                true
            </original>
            <original-action-id>
                787692438
            </original-action-id>
            <posting-date>
                2010-05-08T10:01:22-0700
            </posting-date>
            <website-id>
                3201921
            </website-id>
            <cid>
                2815954
            </cid>
            <advertiser-name>
                SPS EurosportBET
            </advertiser-name>
            <commission-amount>
                0
            </commission-amount>
            <order-discount>
                0
            </order-discount>
            <sid>
                0
            </sid>
            <sale-amount>
                0
            </sale-amount>
        </commission>
    </commissions>
</cj-api>

This is my parser:

   <?php

    // read $response (xml feed)
    $file = "datafeed.xml";
    $xml = new XMLReader;

    $xml->open($file);

    // loop to read in data

    while ($xml->read()) {

            switch ($xml->name) {

            // find the parent node for each commission payment
                case 'commission':
            // initalise xml parser
                    $dom = new DomDocument(); 
                    $dom_node = $xml ->expand();
                    $element = $dom->appendChild($dom_node); 
                    $dom_string = $dom->saveXML($element); 
                    $commission = new SimpleXMLElement($dom_string);

                    // read in data

                    $action_status = $commission->{'action-status'};
                    $action_type = $commission->{'action-type'};
                    $aid = $commission->{'aid'};
                    $commission_id = $commission->{'commission-id'};
                    $country = $commission->{'country'};
                    $event_date = $commission->{'event-date'};
                    $locking_date = $commission->{'locking-date'};
                    $order_id = $commission->{'order-id'};
                    $original = $commission->{'original'};
                    $original_action_id = $commission->{'original_action-id'};
                    $posting_date = $commission->{'posting-date'};
                    $website_id = $commission->{'website-id'};
                    $cid = $commission->{'cid'};
                    $advertiser_name = $commission->{'advertiser-name'};
                    $commission_amount = $commission->{'commission-amount'};
                    $order_discount = $commission->{'order-discount'};
                    $sid = $commission->{'sid'};
                    $sale_amount = $commission->{'sale-amount'};


                print_r($aid);
                    break;

            }

    }
    ?>

The result is :

SimpleXMLElement Object ( [0] => 10730981 ) SimpleXMLElement Object ( )

Why is it returning the second object: SimpleXMLElement Object ( ) and what do I need to do correct it? Thanks.

© Stack Overflow or respective owner

Related posts about Xml

Related posts about php