我有一个XML文件的链接。
我是这样理解的
$xml = simplexml_load_file('http://example.com');
SimpleXMLElement {#1631 ▼
+"@attributes": array:1 [▶]
+"shop": SimpleXMLElement {#1605 ▼
+"name": "Site name"
+"company": "Thomas Munz"
+"url": "https://example.com"
+"currencies": SimpleXMLElement {#1606 ▶}
+"categories": SimpleXMLElement {#1607 ▶}
+"offers": SimpleXMLElement {#1608 ▼
+"offer": array:24403 [▶]
}
}
}
这些XML文件将会改变,其中的值也会改变。我不可能事先知道所有元素的名称。所以我想得到这个XML文件中所有元素的数组,以及它们的计数。即:
$array = [
'attributes' => '1',
'shop' => '1',
'name' => '1',
...
'offer' => '24403',
]
我真的不知道该怎么做:C
1条答案
按热度按时间kmynzznz1#
直接回答这个问题,就像现在所说的那样:
所以我想得到这个XML文件中所有元素的数组,以及它们的计数。
要对所有元素进行计数,而不管它们的嵌套级别如何,请使用XPath表达式
//*
获取所有元素,然后使用Map对它们进行计数,例如:对于以下XML:
上面的PHP代码打印:
但是,如果嵌套很重要(例如标签的名称在不同的级别上可能是相同的),或者需要更复杂的逻辑,我推荐一个类似于以下的递归函数: