PHP,XML - 无法理解如何访问属性

时间:2012-10-26 10:05:38

标签: php xml simplexml

我一直致力于一个涉及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...

感谢您的时间, - 迈克尔米切尔

2 个答案:

答案 0 :(得分:0)

可能有多个foo元素。你得到了第一个。

答案 1 :(得分: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";
}