PHP DOM:getElementsbyTagName

时间:2011-08-08 14:34:17

标签: php dom

我担心这是一个非常愚蠢的问题,但在过去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) ;

但都失败了。我猜我除了正确的组合之外几乎尝试了所有组合:(

2 个答案:

答案 0 :(得分:5)

您可能需要$myname = $thename->item(0)->nodeValue。 $ thename已经是标签为“name”的所有节点的NodeList - 你想要这些节点中的第一项(->item(0)),并且你想要节点的值(->nodeValue)。 $thename应更恰当地命名为$names,并且您会看到为什么$names->item(0)->nodeValue在语义上有意义。

这适用于我 TM

答案 1 :(得分:3)

此代码运行:

<?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);