我一直致力于一个涉及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...
。
感谢您的时间, - 迈克尔米切尔
答案 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";
}