Согласно DOMNodeList
документы , DOMNodeList::item
вернется
Узел в индексной позиции в DOMNodeList или NULL, если это
недопустимый индекс.
Итак, нет, вы не можете сделать $node->getElementsByTagName('local')->item(city)
.
Когда вы делаете это $localData = $node->getElementsByTagName('local')->item(0);
, ваша $localData
переменная устанавливается на объект DOMNode
, к дочерним элементам которого вы можете обращаться, как и к любому другому DOMNode
дочернему объекту.
Однако
Если вы просто читаете XML, а не пишете / добавляете, PHP SimpleXML намного проще в использовании (отсюда и название), чем DOM, и я бы порекомендовал его в вашем случае:
$deals = new SimpleXMLElement($my_xml);
$city = $deals->item->local->city[0];
$state = (string) $deals->item->local->state;
echo "city: $city\n";
echo "state: $state\n";
Обратите внимание, что метод, использующий приведение (string)
, дает тот же результат, что и простая ссылка на клавишу [0]
элемента.