0

我一直在从事一个涉及 PHP 和 XML 的小项目,我遇到的困难来自访问节点中的属性。

以下是从节点访问属性的示例:

<?php
$string = <<<XML
<a>
<foo name="one" game="lonely">1</foo>
</a>
XML;

$xml = simplexml_load_string($string);

foreach ($xml->foo[0]->attributes() as $a => $b) {
    echo $a,'="',$b,"\"\n";
}
?>

在上面的代码中,我似乎无法理解这foo[0]一点。例如,我很困惑为什么你必须做foo[0]->att... 而不是仅仅foo->att...

谢谢你的时间,-迈克尔米切尔

4

2 回答 2

0

可能有多个 foo 元素。你得到了他们中的第一个。

于 2012-10-26T10:09:29.433 回答
0

该表达式$xml->foo允许遍历<foo>中节点的所有子元素$xml。这可以是零个或多个子节点:

foreach ($xml->foo as $foo)
{
    echo "<foo>\n";
    foreach ($foo->attributes() as $name => $value) {
        echo "$name=\"$value\"\n";
    }
}

因此,如果您只需要所有这些零个或多个元素中的一个特定元素,则需要指定您指的是哪一个。这可以通过添加数组大括号及其从零开始的位置来完成,这里$xml->foo[0]

$foo = $xml->foo[0];
echo "<foo>\n";
foreach ($foo->attributes() as $name => $value) {
    echo "$name=\"$value\"\n";
}
于 2012-10-26T10:09:54.460 回答