Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP SimpleXML跳过第一个元素_Php_Simplexml - Fatal编程技术网

PHP SimpleXML跳过第一个元素

PHP SimpleXML跳过第一个元素,php,simplexml,Php,Simplexml,我有以下SimpleXML代码。当我打印输出时,它似乎总是跳过第一个元素。因此,在下面的例子中,它跳过品牌元素,直接进入网站。不管我有多少子级别,它总是跳过第一个 这正常吗?我怎样才能解决这个问题 $xml = ' <brands> <websites> </websites> </brands> '; $xml = simplexml_load_string($xml); echo "<pre>"; print_r($xml);

我有以下SimpleXML代码。当我打印输出时,它似乎总是跳过第一个元素。因此,在下面的例子中,它跳过品牌元素,直接进入网站。不管我有多少子级别,它总是跳过第一个

这正常吗?我怎样才能解决这个问题

$xml = '
<brands>
<websites>
</websites>
</brands>
';

$xml = simplexml_load_string($xml);

echo "<pre>";
print_r($xml);
echo "</pre>";

只需使用另一个元素将其包装:


未跳过根元素。在SimpleXML中,没有单独的文档对象;相反,当解析文件或字符串时,返回的对象表示根元素,如果它是有效的XML,则始终只有一个根元素

您可以通过运行echo$xml->getName来确认这一点


一般来说,不要太在意print\r/var\u dump/etc为SimpleXMLElement对象显示了什么—许多数据以这些函数看不到的形式存储在内部。

这不是因为xmlobject==根元素,换句话说,如果执行$xml->getName,则应该是brandsshow输出please@raksaeng我已更新以显示output@DarkMukke加上这个作为答案!我会避免在任何生产代码中使用标签-我相信这是规范正式保留的。@IMSoP感谢您的关注。不幸的是,我不知道这件事。名称以字符串xml开头的规范,或与“X”|“X”“M”|“M”“L”|“L”匹配的任何字符串,在本规范或本规范的未来版本中保留用于标准化。事实上,我刚刚重新阅读了这个问题,虽然这可行,但完全没有必要。@IMSoP我认为如果可行,这并不意味着它是正确的。此外,我们不知道它将如何使用,也许XML将被发送到严格遵循规范的客户机。因此,我非常感谢你的评论。
SimpleXMLElement Object
(
    [websites] => SimpleXMLElement Object
        (
            [0] => 

        )

)
<root>
    <brands>
        <websites>
        </websites>
    </brands>
</root>