PHP DOM: getElementsbyTagName - PullRequest
       0

PHP DOM: getElementsbyTagName

5 голосов
/ 08 августа 2011

Боюсь, что это действительно глупый вопрос, но я действительно застрял после попытки загрузки комбинаций за последние 2 часа.Я пытаюсь извлечь имя пользователя из 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) ;

, но все не удалось.Похоже, я попробовал почти все комбинации, кроме правильной: (* ​​1015 *

Ответы [ 2 ]

5 голосов
/ 08 августа 2011

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

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

3 голосов
/ 08 августа 2011

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

<?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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...