Как индексировать элементы XML в PHP? - PullRequest
1 голос
/ 30 мая 2011

Я не умею работать с 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 голос
/ 30 мая 2011

Посмотрите на возвращаемое значение getElementsByTagName, которое будет DOMNodeList .

Также для вашей проблемы вы можете сделать что-то вроде:

$names = array();
foreach ($dom->getElementsByTagName("name") as $nameNode) {
  $names[] = $nameNode->nodeValue;
}

Вам не нужно проверять возвращаемое значение getElementsByTagName, поскольку оно всегда будет DOMNodeList.Таким образом, вы можете использовать его непосредственно в цикле foreach, не назначая ненужные переменные.

Что вы должны проверить, это размер $names после цикла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...