var_dump用于DOMNodeList打印输出意外结果

时间:2014-09-11 19:05:19

标签: php xml var-dump

我有一个xml文件,我将其加载如下:

//$file the file system path of the xml file
function getTopicsList($file){
        $doc = new DOMDocument();
        $doc->load( $file );
        var_dump($doc->getElementsByTagName('topic'));
        return $doc->getElementsByTagName('topic');
    }

加载的xml文件内容如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<topics>
    <topic>
        <title>Title1</title>
        <keywords>"Some Keys"</keywords>
    </topic>
    <topic>
        <title>The Title</title>
        <keywords>Another Key</keywords>
    </topic>
    <topic>
        <title>A Title</title>
        <keywords>Key two</keywords>
    </topic>
</topics>

上述代码中的var_dump()只打印出有限的信息,例如:

object(DOMNodeList)#30 (1) {
  ["length"]=>
  int(3)
}

我希望它至少应该打印该对象的属性,即xml标签及其值。我尝试使用其他功能,例如print_r()var_export(),但没有我想要的详细信息。

1 个答案:

答案 0 :(得分:0)

不,这是节点列表。您可以使用foreachitem()进行迭代,或使用getElementsByTagName()方法访问节点。

节点列表用于不同的地方,$childNodes是一个,另一个是$dom = new DOMDocument(); $dom->loadXML('<foo/>'); var_dump($dom->documentElement); 属性。 Xpath表达式也返回节点列表。

请注意,节点不仅可以是元素,还可以是多种节点类型。像文本,cdata部分或属性一样。

您可以使用var_dump()转储单个节点。这适用于PHP&gt; = 5.3.11或&gt; = 5.4.1。

object(DOMElement)#2 (18) { 
  ["schemaTypeInfo"]=> 
  NULL 
  ["tagName"]=> 
  string(3) "foo" 
  ["textContent"]=> 
  string(0) "" 
  ["baseURI"]=> 
  string(1) "/" 
  ["localName"]=> 
  string(3) "foo" 
  ["prefix"]=> 
  string(0) "" 
  ["ownerDocument"]=> 
    ...

输出:

{{1}}