Я фиктивный для PHP и XML, поэтому, пожалуйста, будьте терпеливы, если мой вопрос кажется немым.
Я хочу знать, как индексировать элементы XML, чтобы я мог получить к ним доступ. Я планирую положить их в массив. Однако я не знаю, как получить количество возвращаемых элементов.
Вот коды:
exer.xml
<?xml version="1.0" encoding="ISO-8859-1"?> <actionstars> <name>Jean Claude Van Damme</name> <name>Scott Adkins</name> <name>Michael Jai White</name> <name>Dolph Lundgren</name> <name>Tom Cruise</name> <name>Michael Worth</name> </actionstars>
index.php
<?php $dom = new DomDocument(); $dom->load("exer.xml"); $names = $dom->getElementsByTagName("name"); echo count($names); foreach($names as $name) { print $name->textContent . "<br />"; } ?>
Когда я делаю счет echo count($names);
он возвращает 1
, что, очевидно, не является числом элементов. Пожалуйста помоги.
Посмотрите на возвращаемое значение getElementsByTagName
, которое будет DOMNodeList .
Также для вашей проблемы вы можете сделать что-то вроде:
$names = array(); foreach ($dom->getElementsByTagName("name") as $nameNode) { $names[] = $nameNode->nodeValue; }
Вам не нужно проверять возвращаемое значение getElementsByTagName
, поскольку оно всегда будет DOMNodeList. Таким образом, вы можете использовать его непосредственно в foreach-loop, не присваивая ненужные переменные.
То, что вам нужно проверить, – это размер $names
после цикла.