将SimpleXMLElement对象打印为xml树

问题描述 投票:-2回答:1

我需要打印我的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
        )

)
php xml simplexml
1个回答
0
投票
鉴于预期的XML,您的print_r()转储应如下所示:

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

([Test code

因此您在创建文档时一定犯了一个错误。您最有可能添加了多余的方括号。请比较:

$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';

© www.soinside.com 2019 - 2024. All rights reserved.