0
votes

I have a xml and could get the arrays with the data I need with xpath after loaded the xml with simplexml_load_file.

I tried it this way : Access @attributes data in SimpleXMLElement in PHP

with my XML to array I still cant access the nodes, could someone please check my Code: thanks

$result2 = $xml->xpath("//file[@Catid='151']");

that is giving this array: Array

(
[0] => SimpleXMLElement Object
    (
        [@attributes] => Array
            (
                [path] => export/freexml.int/DE/4757.xml
                [Product_ID] => 4757
                [Updated] => 20170902053143
                [Quality] => ICECAT
                [Supplier_id] => 3
                [Prod_ID] => TT34MUK
                [Catid] => 151
                [On_Market] => 1
                [Model_Name] => THINKPAD T23 P3-1.13G
                [Product_View] => 12655
                [HighPic] => http://images.icecat.biz/img/norm/high/4757-6880.jpg
                [HighPicSize] => 4138
                [HighPicWidth] => 200
                [HighPicHeight] => 150
                [Date_Added] => 20050715000000
                [Limited] => No
            )

        [EAN_UPCS] => SimpleXMLElement Object
            (
                [EAN_UPC] => SimpleXMLElement Object
                    (
                        [@attributes] => Array
                            (
                                [Value] => 3606503209062
                                [IsApproved] => 0
                            )

                    )

            )

        [Country_Markets] => SimpleXMLElement Object
            (
                [Country_Market] => SimpleXMLElement Object
                    (
                        [@attributes] => Array
                            (
                                [Value] => LU
                            )

                    )

            )

    )

[1] => SimpleXMLElement Object
    (
        [@attributes] => Array
            (
                [path] => export/freexml.int/DE/41895.xml
                [Product_ID] => 41895
                [Updated] => 20170902052843
                [Quality] => ICECAT
                [Supplier_id] => 7
                [Prod_ID] => LX.T2606.067
                [Catid] => 151
                [On_Market] => 1
                [Model_Name] => TRAVELMATE 432LC P4-2.53G
                [Product_View] => 12056
                [HighPic] => http://images.icecat.biz/img/norm/high/41895-65.jpg
                [HighPicSize] => 14404
                [HighPicWidth] => 330
                [HighPicHeight] => 290
                [Date_Added] => 20050715000000
                [Limited] => No
            )

        [Country_Markets] => SimpleXMLElement Object
            (
                [Country_Market] => SimpleXMLElement Object
                    (
                        [@attributes] => Array
                            (
                                [Value] => DE
                            )

                    )

            )

    )

How can I access the values like 'path' and so on? I have problems with the [0] => SimpleXMLElement Object so what is the Name of the node?

echo (string)$result2->0[0]->attributes()->path;

didnt work.....

thanks

1

1 Answers

0
votes

Although it would be easier to check with the XML, you will probably find the correct notation is...

echo (string)$result2[0]->attributes()->path;

This assumes that you want the first item that XPath has found.

You may also find

echo (string)$result2[0]['path'];

Works (but not always).