只有一个节点名,但nodeValue-DOMXPATH有多个值

时间:2018-05-02 19:02:09

标签: xml xpath nodevalue nodename

为什么nodename打印“root”,但nodeValue返回子节点中的多个值和所有值。

运行此代码,echo将返回

  

“父节点的名称为root,其值为Text值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 个答案:

答案 0 :(得分:0)

&#34; nodeValue返回子节点中的多个和所有值&#34;

因为那是你在. $rootNodeParent->nodeValue .那里要求的。

  

根节点的字符串值是该节点的串联   string节点中所有文本节点后代的字符串值   文件订单。

     

&#34;对于每种类型的节点,都有一种确定字符串值的方法   对于该类型的节点。对于某些类型的节点,字符串值为   节点的一部分;对于其他类型的节点,字符串值为   根据后代节点的字符串值计算。&#34;

参考https://www.w3.org/TR/1999/REC-xpath-19991116/#data-model