Php 显示意外行为的SimpleXML

Php 显示意外行为的SimpleXML,php,xml,simplexml,Php,Xml,Simplexml,我有一个名为conf.XML的XML文件,我试图通过一个简单的php脚本(放在同一个目录中)显示该XML文件的内容,如下所示: conf.xml <?xml version="1.0" encoding="UTF-8"?> <registration_info> <organization name="Home" /> </registration_info> 我觉得代码没有问题,但是输出是意外的,因为预期的输出是“Home”。有人能帮我解决

我有一个名为conf.XML的XML文件,我试图通过一个简单的php脚本(放在同一个目录中)显示该XML文件的内容,如下所示:

conf.xml

<?xml version="1.0" encoding="UTF-8"?>
<registration_info>
  <organization name="Home" />
</registration_info>
我觉得代码没有问题,但是输出是意外的,因为预期的输出是“Home”。有人能帮我解决这个问题并给我解释一下解决方法吗


提前谢谢。

试试这个,希望它能帮到你。您只需删除
$node=$data->registration\u info


试试这个,希望它能帮助你。您只需删除
$node=$data->registration\u info


这里给出的现有答案是正确的,但解释相当混乱。SimpleXML并没有隐藏XML的根节点,只是您已经拥有的对象就是该节点

每个
simplexmlement
对象表示XML文档树中的特定节点。SimpleXML中没有表示“整个文档”的单独对象,因此当您运行
SimpleXML\u load\u file
时,返回的对象是根节点的
SimpleXMLElement

$root_node = simplexml_load_file("conf.xml");
echo $root_node->getName(); // registration_info

$child_node = $root_node->organization;
// Short for $root_node->organization[0];
// meaning "get the first child with name 'organization'
echo $child_node->getName(); // organization

这里给出的现有答案是正确的,但解释相当混乱。SimpleXML并没有隐藏XML的根节点,只是您已经拥有的对象就是该节点

每个
simplexmlement
对象表示XML文档树中的特定节点。SimpleXML中没有表示“整个文档”的单独对象,因此当您运行
SimpleXML\u load\u file
时,返回的对象是根节点的
SimpleXMLElement

$root_node = simplexml_load_file("conf.xml");
echo $root_node->getName(); // registration_info

$child_node = $root_node->organization;
// Short for $root_node->organization[0];
// meaning "get the first child with name 'organization'
echo $child_node->getName(); // organization

您必须忽略顶级节点(
registration_info
),是吗?想解释一下原因吗?我想这是一个设计决定(毕竟它是多余的,因为总是需要一个,而且只能有一个),但我只能推测。你必须忽略顶层节点(
registration\u info
),在这种情况下。@lvaroGonzález是吗?想解释一下原因吗?我想这是一个设计决策(毕竟它是多余的,因为总是需要一个,而且只能有一个)但我只能猜测。你能解释一下你的解决方案吗?你为什么忽略了注册信息节点?@hecate如果你只是查看我更新的帖子,没有密钥
registration\u info
@hecate你试图访问一个实际上不存在的密钥。@hecate
registration\u info
是你的根节点xml。从
$data
创建xml对象会隐式隐藏您的根节点,您可以在不访问根节点的情况下开始使用对象,但是直接访问所有chlid节点。你能解释一下你的解决方案吗?为什么你忽略了注册信息节点?@hecate如果你只是查看我更新的帖子,没有key
registration\u info
@hecate你试图访问的密钥实际上并不存在。@hecate
registration\u info
是的根节点您的xml。从
$data
创建xml对象会隐式隐藏您的根节点,您可以在不访问根节点的情况下开始使用对象,但可以直接访问所有chlid节点。
SimpleXMLElement Object
(
    [organization] => SimpleXMLElement Object
        (
            [@attributes] => Array
                (
                    [name] => Home
                )

        )

)
$root_node = simplexml_load_file("conf.xml");
echo $root_node->getName(); // registration_info

$child_node = $root_node->organization;
// Short for $root_node->organization[0];
// meaning "get the first child with name 'organization'
echo $child_node->getName(); // organization