如何使用php的SimpleXML获取XML的第一个标签的名称


How to get name of very first tag of XML with php's SimpleXML?

我正在使用simplexml_load_string()解析XML字符串,但我注意到我没有获得第一个标签的名称。

例如,我有两个 xml 字符串:

$s = '<?xml version="1.0" encoding="UTF-8"?>
<ParentTypeABC>
    <chidren1>
        <children2>1000</children2>
    </chidren1>
</ParentTypeABC>
';
$t = '<?xml version="1.0" encoding="UTF-8"?>
<ParentTypeDEF>
    <chidren1>
        <children2>1000</children2>
    </chidren1>
</ParentTypeDEF>
';

请注意,它们几乎相同,唯一的区别是第一个节点<ParentTypeABC>,另一个节点<ParentTypeDEF>

然后我只是将它们转换为 SimpleXML 对象:

$o = simplexml_load_string($s);
$p = simplexml_load_string($t);

但是我有两个相等的对象,它们都没有出现"top"节点的名称,无论是ParentTypeABC还是ParentTypeDEF(我使用 print_r() 检查对象(:

// with top node "ParentTypeABC"
SimpleXMLElement Object
(
    [chidren1] => SimpleXMLElement Object
        (
            [children2] => 1000
        )
)
// with top node "ParentTypeDEF"
SimpleXMLElement Object
(
    [chidren1] => SimpleXMLElement Object
        (
            [children2] => 1000
        )
)

那么我应该如何知道顶部节点的名称呢?如果我解析未知的 XML,并且我需要知道顶部节点的名称是什么,我该怎么办?

simplexml_load_string()有没有

我可以使用的选项?

我知道有很多方法可以用PHP解析XML,但我希望它尽可能简单,并且要获得一个简单的对象或数组,我可以轻松导航。

我在这里做了一个简单的例子来摆弄。

SimpleXML 有一个getName()方法。

echo $xml->getName();

这应该返回相应节点的名称,无论是否为 root。

http://php.net/manual/en/simplexmlelement.getname.php