Я только начал возиться с манипуляциями с XML с помощью PHP и наткнулся на что-то неожиданное. Вот XML, который я использую в качестве тестового ввода:
<list>
<activity1> running </activity1>
<activity2> swimming </activity2>
<activity3> soccer </activity3>
</list>
Теперь я ожидал, что этот код PHP будет выводить 'activity1':
$xmldoc = new DOMDocument();
$xmldoc->load('file.xml');
//the line below would make $root the <list> node
$root = $xmldoc->firstChild;
//the line below would make $cnode the first child
//of the <list> node, which is <activity1>
$cnode = $root->firstChild;
//this should output 'activity1'
echo 'element name: ' . $cnode->nodeName;
Вместо этого этот код выводит #text. Я мог бы исправить это, вставив новую строку в код перед печатью имени узла:
$cnode = $cnode->nextSibling;
Теперь, я бы ожидал, что вместо этого будет напечатано 'activity2', но печатает 'activity1'. Что происходит?