PHP простой элемент XML вопрос / ошибка - PullRequest
0 голосов
/ 16 декабря 2009

У меня есть xml, скажем, <names number="12"></names>

Когда я запускаю следующее:

$simpleXMLElement = new SimpleXMLElement($xml);
pr($simpleXMLElement);

Я получаю следующее:

SimpleXMLElement Object
(
    [@attributes] => Array
        (
            [number] => 12
        )

    [0] => 

)

Это добавляет 0 запись. Это странно Я не знаю, что он должен представлять. Если я сделаю это вместо:

<names number="12"><name first="oliver" /></names>

Я получаю следующий вывод:

SimpleXMLElement Object
(
    [@attributes] => Array
        (
            [number] => 12
        )

    [name] => SimpleXMLElement Object
        (
            [@attributes] => Array
                (
                    [first] => oliver
                )

        )

)

Это как и ожидалось (по крайней мере для меня). Есть мысли / направление?

Ответы [ 2 ]

0 голосов
/ 16 декабря 2009

Кажется, что SimpleXML просто и быстро выполняет парсинг элемента: поскольку у вас есть <names></names>, он добавляет массив внутри элемента, как ожидающие элементы внутри него, и когда он не находит любые элементы внутри тегов names оставляют пустой массив с ключом 0, поскольку он не знает, какое имя ему дать.

Короткий тег (<names />) не должен генерировать пустой контент. (Как бы странно это ни звучало.)

0 голосов
/ 16 декабря 2009

Во-первых: если вы неправильно отформатируете свой пост, XML не будет отображаться. Сделать отступ для любого кода минимум с 4 пробелами.

Во-вторых, не ожидайте, что print_r() или var_dump() предоставят вам точное представление SimpleXMLElement, потому что SimpleXML использует много магии, поэтому дочерние элементы и атрибуты не обязательно будут отображаться в выходных данных.

...