PHP DOM: getElementsbyTagName

Я боюсь, что это действительно глупый вопрос, но я действительно застрял после попытки загрузки комбинаций в течение последних 2 часов. Я пытаюсь вытащить NAME из XML-файла

Мой XML-файл:

<?xml version="1.0"?> <userdata> <name>John</name> </userdata> 

Мой php:

  $doc = new DOMDocument(); $doc -> load( "thefile.xml" ); $thename = $doc -> getElementsByTagName( "name" ); $myname= $thename -> getElementsByTagName("name") -> item(0) -> nodeValue; 

Ошибка:

 Catchable fatal error: Object of class DOMElement could not be converted to string in phpreader.php 

я пытался

 $myname= $thename -> getElementsByTagName("name") -> item(0) ; $myname= $doc -> getElementsByTagName("name") -> item(0) -> nodeValue; $myname= $doc -> getElementsByTagName("name") -> item(0) ; 

но все терпят неудачу. Думаю, я пробовал почти каждую комбинацию, кроме правильной 🙁

Вы можете захотеть $myname = $thename->item(0)->nodeValue . $ thename уже является NodeList всех узлов, чей тег является «именем» – вам нужен первый элемент этих ( ->item(0) ), и вы хотите получить значение узла ( ->nodeValue ). $thename должно быть более подходящим именем $names , и вы увидите, почему $names->item(0)->nodeValue имеет смысл семантически.

Это работает для меня.

Этот запуск кода:

 <?php $xml = <<<XML <?xml version="1.0"?> <userdata> <name>John</name> </userdata> XML; $doc = new DOMDocument(); $doc->loadXML($xml); $names = $doc->firstChild->getElementsByTagName("name"); $myname = $names->item(0)->nodeValue; var_dump($myname);