#php #xml #dom
#php #xml #dom
Вопрос:
Я не разбираюсь в 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
, что, очевидно, не количество элементов. Пожалуйста, помогите.
Комментарии:
1. Выводит ли это узлы в цикле?
Ответ №1:
Взгляните на возвращаемое значение getElementsByTagName
, которое будет DOMNodeList .
Также для вашей проблемы вы могли бы сделать что-то вроде:
$names = array();
foreach ($dom->getElementsByTagName("name") as $nameNode) {
$names[] = $nameNode->nodeValue;
}
На самом деле вам не нужно проверять возвращаемое значение getElementsByTagName
, поскольку оно всегда будет DOMNodeList. Таким образом, вы можете использовать его непосредственно в цикле foreach, не назначая ненужных переменных.
Что вам нужно проверить, так это размер $names
после цикла.