我有一些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
)
)
)
这是预期的(至少对我而言)。有什么想法/方向吗?
答案 0 :(得分:0)
首先:如果您的帖子格式不正确,则不会显示XML。缩进任何至少包含4个空格的代码。
其次,不要指望print_r()
或var_dump()
为您提供SimpleXMLElement
的精确表示,因为SimpleXML使用了很多魔法,因此子项和属性不一定会显示在输出。
答案 1 :(得分:0)
似乎只是SimpleXML在解析元素时做了一个快速而肮脏的工作:由于你有<names></names>
,它在元素内部添加一个数组,就像期望其中的元素一样,当它没有时找到names
标签内的任何元素,它会使用键0
留下一个空数组,因为它不知道要给它的名称。
短标记(<names />
)不应生成空内容。 (听起来很奇怪。)