1

我目前正在学习使用 php DOMDocument 对象遍历 xml 文档标签的不同方法,我了解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 />';
        }
    }
?>
4

1 回答 1

3
$elements->item(0)->childNodes->item(0)->nodeValue

第一的:

$elements

当前元素$被解析和引用。在代码示例中,这将是:

$firstNameTags = $studentRoot->item($i)->getElementsByTagName('FirstName');
$firstNameTags->...

下一个:

->item(0)

获取对节点列表中第一$elements 的引用。由于这是零索引,因此将通过index获取列表->item(0)的第一个节点

->childNodes

获取上面引用的第一个节点的子节点列表。由于没有,这是的(只读)属性$elements->item(0)()DOMNodeList

->item(0)

同样,通过index获取子节点列表中的第一个节点。

->nodeValue

节点本身的值。


如果单用状态的形式:

$obj->method()->method()->prop

让您感到困惑,请查看方法链接,这就是将所有这些方法调用放在一起的方法。


$注意,你省略了s,但这表明按照惯例有一个或多个可能。所以$element将是零或一个元素引用,$elements可能是零,一个或多个$element.

于 2013-03-21T03:08:59.813 回答