我有一个名为conf.xml的XML文件,我试图通过一个简单的php脚本(放在同一目录中)显示这个XML文件的内容,如下所示:
conf.xml中
<?xml version="1.0" encoding="UTF-8"?>
<registration_info>
<organization name="Home" />
</registration_info>
PHP脚本:
$data=simplexml_load_file("conf.xml");
$node=$data->registration_info;
$subnode=$node->organization;
echo (string) $subnode['name']; // Displays null string
我觉得代码没有错,但输出是意料之外的,因为预期的输出是&#34; Home&#34;。有谁能帮我解决这个问题并向我解释解决方案?
提前致谢。
答案 0 :(得分:2)
这里给出的现有答案是正确的,但解释相当混乱。 SimpleXML不是隐藏 XML的根节点,只是您拥有的对象已经该节点。
每个SimpleXMLElement
对象代表XML文档树中的特定节点。 SimpleXML中没有单独的对象表示&#34;整个文档&#34;,因此当您运行simplexml_load_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
答案 1 :(得分:1)
试试这个希望这会帮助你。您只需删除$node=$data->registration_info;
<?php
ini_set('display_errors', 1);
$data=simplexml_load_file("conf.xml");
$subnode=$data->organization;
echo (string) $subnode['name'];
输出: print_r($data)
SimpleXMLElement Object
(
[organization] => SimpleXMLElement Object
(
[@attributes] => Array
(
[name] => Home
)
)
)