我正在使用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;节点的名称显示为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,但我希望它像posible一样简单,并且为了得到一个简单的对象或数组,我可以轻松导航。
我做了一个简单的例子here来摆弄。
答案 0 :(得分:2)
SimpleXML有一个getName()
方法。
echo $xml->getName();
这应返回相应节点的名称,无论是否为root。