Как индексировать XML-элементы в PHP?

#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 после цикла.