Доступ к данным @attributes в SimpleXMLElement в PHP

Просто хотел начать с того, что я прочитал МНОГО вопросов на этом сайте об этой конкретной проблеме, но я все еще пытаюсь применить это к моему сценарию. Если бы кто-нибудь мог мне помочь, было бы здорово! :)

Я пытаюсь извлечь данные из следующего XML:

$myXML = '<?xml version="1.0" encoding="UTF-8"?>
<products><product uri="https://192.168.110.201:9630/api/products/1807/" id="1807"    resource_type="current"><code>DEMO - MC700X/A</code><flags><inventoried>true</inventoried><editable_sell>false</editable_sell><master_model>false</master_model></flags><sell_price>0.00</sell_price><description>Apple MC700X/A Demo</description><inventory><available>7</available><reserved>0</reserved><coming_for_stock>2.0</coming_for_stock><coming_for_customer>0.0</coming_for_customer><warehouses>0</warehouses><total>7</total></inventory><product_photos/></product></products>';

Я использую SimpleXML, чтобы поместить их в переменную PHP (объект?) Следующим образом:

$xml = new SimpleXMLElement($myXML);

Если я сделаю:

echo '<pre>';
print_r($xml);
echo '</pre>';

Я получаю возвращается следующее:

SimpleXMLElement Object
(
    [product] => SimpleXMLElement Object
        (
            [@attributes] => Array
                (
                    [uri] => https://192.168.110.201:9630/api/products/1807/
                    [id] => 1807
                    [resource_type] => current
                )

            [code] => DEMO - MC700X/A
            [flags] => SimpleXMLElement Object
                (
                    [inventoried] => true
                    [editable_sell] => false
                    [master_model] => false
                )

            [sell_price] => 0.00
            [description] => Apple MC700X/A Demo
            [inventory] => SimpleXMLElement Object
                (
                    [available] => 7
                    [reserved] => 0
                    [coming_for_stock] => 2.0
                    [coming_for_customer] => 0.0
                    [warehouses] => 0
                    [total] => 7
                )

            [product_photos] => SimpleXMLElement Object
                (
                )

        )

)

Теперь, когда я пытаюсь получить доступ к этим данным программно, следующее работает нормально:

// This returns the value as expected
echo '<pre>';
echo($xml->product->code);
echo '<br>';
echo($xml->product->sell_price);
echo '<br>';
echo($xml->product->inventory->available);
echo '<br>';
echo '</pre>';

Это возвращает:

DEMO - MC700X/A
0.00
7

Но мне нужно иметь доступ к тегу "id" в базовом "продукте". "элемент (т.е. бит @attributes), но не может его обработать. Я много читал и решил, что смогу использовать метод attributes (), но я не могу его точно понять.

Попытка сделать это не сработала:

echo '<pre>';
echo($xml->attributes());
echo '<br>';
echo '</pre>';

Он просто ничего не возвращает. Кто-нибудь может мне помочь? Я хочу иметь возможность отображать тег "id" ... то есть то, что я ожидал увидеть:

echo $xml['product']['@attributes']['id'];

, очевидно, тоже не работает.

Спасибо !! Джон

24
задан John Cleary 23 September 2011 в 00:32
поделиться