2014-09-11 2 views
0

У меня есть файл XML я загрузить его как следующие:var_dump для DOMNodeList распечатке неожиданный результат

//$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) 
} 

Я ожидал, что это будет ld напечатать хотя бы свойства этого объекта, т. е. теги xml и его значения. Я пытался использовать другие функции, такие как print_r() и var_export(), но нет деталей, которые я хочу.

ответ

0

Нет, это список узлов. Вы можете повторить его с помощью foreach или получить доступ к узлам, используя метод item().

Списки узлов используются в разных местах, getElementsByTagName() - это один, другой - собственность $childNodes. Выражения Xpath также возвращают списки узлов.

Помните, что узлы могут быть не только элементами, но и несколькими типами узлов. Как текст, раздел или атрибут cdata.

Вы можете использовать var_dump() для сброса одного узла. Это работает с PHP> = 5.3.11 или> = 5.4.1.

$dom = new DOMDocument(); 
$dom->loadXML('<foo/>'); 
var_dump($dom->documentElement); 

Выход:

object(DOMElement)#2 (18) { 
    ["schemaTypeInfo"]=> 
    NULL 
    ["tagName"]=> 
    string(3) "foo" 
    ["textContent"]=> 
    string(0) "" 
    ["baseURI"]=> 
    string(1) "/" 
    ["localName"]=> 
    string(3) "foo" 
    ["prefix"]=> 
    string(0) "" 
    ["ownerDocument"]=> 
    ... 
Смежные вопросы