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

时间:2014-10-21 15:28:16

标签: php xml

我正在使用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);

然后我有两个相同的对象,没有一个具有&#34; top&#34;节点的名称显示为ParentTypeABCParentTypeDEF(我使用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,但我希望它像posible一样简单,并且为了得到一个简单的对象或数组,我可以轻松导航。

我做了一个简单的例子here来摆弄。

1 个答案:

答案 0 :(得分:2)

SimpleXML有一个getName()方法。

echo $xml->getName();

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

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