Только одно имя узла, но несколько значений для nodeValue- DOMXPATH
Почему nodename выводит "root", но nodeValue возвращает несколько значений и все значения в дочерних узлах.
Запустив этот код, эхо вернется
"Имя родительского узла является корневым. Его значение равно Текстовое значение 11111 Пустое текстовое значение 2222 Пробел текстового значения 3333"
Второе эхо вернет это
"Дочерний узел - это spaceIts, значение - это пробел, текстовое значение 3333"
<?php
$xmldoc=
'<?xml version="1.0" ?><root>
<text>Text value 11111</text>
<none/>
<empty>Empty text value 2222</empty>
<space>space text value 3333 </space>
</root>';
$domdoc = new DoMDocument();
$domdoc->loadXML($xmldoc);
$xpath = new DOMXPath($domdoc);
$rootNodeListParent = $xpath->query("//root");
$rootNodeParent = $rootNodeListParent[0];
echo "The Name of the parent node is " . $rootNodeParent->nodeName. " Its value is " . $rootNodeParent->nodeValue . "<br>";
$queryNodeList = $xpath->query("//space");
$nodeSpace = $queryNodeList[0];
echo "The child node is " . $nodeSpace->nodeName. "Its value is " . $nodeSpace->nodeValue; //spacevalue ssddd
}
1 ответ
"nodeValue возвращает несколько и все значения в дочерних узлах"
Потому что это то, что вы просили с . $rootNodeParent->nodeValue .
там.
Строковое значение корневого узла - это объединение строковых значений всех потомков текстового узла корневого узла в порядке документа.
"Для каждого типа узла есть способ определения строкового значения для узла этого типа. Для некоторых типов узлов строковое значение является частью узла; для других типов узлов строковое значение вычисляется из строкового значения узлов-потомков."