Как зациклить объект SimpleXML? - PullRequest
0 голосов
/ 05 августа 2010

Я загружаю веб-страницу с кодом XML:

$xml  = simplexml_load_file($page);

Результаты:

SimpleXMLElement Object
(
    [@attributes] => Array
        (
            [Message] => Success
            [Date] => 0001-01-01T00:00:00
        )

    [FUNDAMENTALS] => SimpleXMLElement Object
        (
            [FUNDAMENTAL] => Array
                (
                    [0] => SimpleXMLElement Object
                        (
                            [@attributes] => Array
                                (
                                    [Symbol] => AAA
                                    [Name] => Description AAA

                                )

                        )

                    [1] => SimpleXMLElement Object
                        (
                            [@attributes] => Array
                                (
                                    [Symbol] => BBB
                                    [Name] => Description BBB

                                )

                        )
                )
        )
)

Мне нужно прочитать каждый [Символ] [Имя], как я могу это сделать?

Ответы [ 2 ]

2 голосов
/ 05 августа 2010

как то так:

$xml  = simplexml_load_file($page);
foreach ($xml->FUNDAMENTALS->FUNDAMENTAL as $fundamental) {
    $symbol = $fundamental['Symbol'];
    $name = $fundamental['Name'];
}
0 голосов
/ 05 августа 2010

Вы также можете использовать SimpleXmlIterator:

SimpleXMLIterator обеспечивает рекурсивную итерацию по всем узлам объекта SimpleXMLElement.

Если вы хотите перебирать только элементы <FUNDAMENTAL>, вы можете рассмотреть возможность их извлечения с помощью XPath, например,

$fundamentals = $sxe->xpath('//FUNDAMENTAL');

Если вы предоставите XML для своего вопроса, я приведу пример кода.

...