我目前正在学习使用php DOMDocument对象,我理解通过标签迭代的foreach
循环,但$element->item(0)->childNodes->item(0)->nodeValue
对我来说有点不清楚,有人可以向我详细解释吗?谢谢你。
<?php
$xmlDoc = new DOMDocument();
$xmlDoc->load('StudentData.xml');
$studentRoot = $xmlDoc->getElementsByTagName('Student');
for ($i = 0; $i < ($studentRoot->length); $i++) {
$firstNameTags = $studentRoot->item($i)->getElementsByTagName('FirstName');
echo $firstNameTags->item(0)->childNodes->item(0)->nodeValue.' <br />';
}
/* so much easier and clear to understand! */
foreach($studentRoot as $node) {
/* For every <student> Tag as a separate node,
step into it's child node, and for each child,
echo the text content inside */
foreach($node->childNodes as $child) {
echo $child->textContent.'<br />';
}
}
?>
$elements->item(0)->childNodes->item(0)->nodeValue
:
$elements
当前元素$被解析和引用。在代码示例中,它将是:
$firstNameTags = $studentRoot->item($i)->getElementsByTagName('FirstName');
$firstNameTags->...
下:->item(0)
获取节点列表中第一个$elements
项的引用。由于这是零索引,->item(0)
将通过索引获得列表中的第一个节点。
->childNodes
获取上面->item(0)
引用的第一个$elements
节点的子节点列表。由于没有()
,所以这是DOMNodeList
的属性。
->item(0)
同样,通过索引获取子节点列表中的第一个节点。
->nodeValue
节点本身的值。
如果状态单独的形式:
$obj->method()->method()->prop
让你感到困惑,看看方法链接,它是用来把所有的方法调用放在一起的。
$注意,您省略了s
,但这表明根据约定存在一个或多个可能的。因此,$element
将是 0或一个元素引用,$elements
可能是0,$element
集合中的一个或多个。