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