php简单的xml元素问题/ bug

时间:2009-12-16 07:31:23

标签: php parsing simplexml

我有一些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 :(得分:0)

首先:如果您的帖子格式不正确,则不会显示XML。缩进任何至少包含4个空格的代码。

其次,不要指望print_r()var_dump()为您提供SimpleXMLElement的精确表示,因为SimpleXML使用了很多魔法,因此子项和属性不一定会显示在输出。

答案 1 :(得分:0)

似乎只是SimpleXML在解析元素时做了一个快速而肮脏的工作:由于你有<names></names>,它在元素内部添加一个数组,就像期望其中的元素一样,当它没有时找到names标签内的任何元素,它会使用键0留下一个空数组,因为它不知道要给它的名称。

短标记(<names />)不应生成空内容。 (听起来很奇怪。)