Распечатать объект SimpleXMLElement в виде дерева xml - PullRequest
0 голосов
/ 31 января 2020

Мне нужно напечатать мой объект SimpleXMLElement.

Почему элементы "level1" отображаются отдельно? XML объект выглядит хорошо.

Должно быть:

<items>
    <item>
        <id>1</id>
        <level1>
            <sub1>subas1 id</sub1>
            <sub2>subas2 id</sub2>
        </level1>
        <name>car</name>
        <cat>cat1</cat>
    </item>
</items>

Но конечный результат:

<items>
    <item>
        <id>1</id>
        <level1>
            <sub1>subas1 id</sub1>
        </level1>
        <name>car</name>
        <cat>cat1</cat>
        <level1>
            <sub2>subas2 id</sub2>
        </level1>
    </item>
</items>

Объект:

SimpleXMLElement Object
(
    [item] => SimpleXMLElement Object
        (
            [id] => 1
            [level1] => Array
                (
                    [0] => SimpleXMLElement Object
                        (
                            [sub1] => subas1 id
                        )

                    [1] => SimpleXMLElement Object
                        (
                            [sub2] => subas2 id
                        )

                )

            [name] => car
            [cat] => cat1
        )

)

1 Ответ

1 голос
/ 31 января 2020

Учитывая ожидаемый XML, ваш print_r() дамп должен выглядеть следующим образом:

SimpleXMLElement Object
(
    [item] => SimpleXMLElement Object
        (
            [id] => 1
            [level1] => SimpleXMLElement Object
                (
                    [sub1] => subas1 id
                    [sub2] => subas2 id
                )

            [name] => car
            [cat] => cat1
        )

)

( Тестовый код )

Итак, вы, должно быть, сделали ошибка при создании документа. Скорее всего, вы добавили посторонние квадратные скобки. Пожалуйста, сравните:

$xml = new SimpleXMLElement('<items />');
$xml->item->id = 1;
$xml->item->level1->sub1 = 'subas1 id';
$xml->item->level1->sub2 = 'subas2 id';
$xml->item->naem = 'car';
$xml->item->cat = 'cat1';

... с:

$xml = new SimpleXMLElement('<items />');
$xml->item->id = 1;
$xml->item->level1[]->sub1 = 'subas1 id';
$xml->item->level1[]->sub2 = 'subas2 id';
$xml->item->naem = 'car';
$xml->item->cat = 'cat1';
...