无法从PHP中的递归函数获取xml元素属性值?

时间:2013-02-12 03:33:55

标签: php xml recursion simplexml

每次点击id=中没有值的链接时,我都无法得到xml元素的属性值,但是当查看我的xml有一个属性值时,为什么会发生这种情况我错过了什么?< / p>

这是我的PHP代码:

 <?php
function parse_recursive(SimpleXMLElement $element, $level = 0)
{
    $indent = str_repeat('', $level); 

    $value = trim((string) $element); 
    $children = $element->children(); 
    $attributes = $element->attributes();

    echo '<ul>';
    if(count($children) == 0 && !empty($value))
    {   
        if($element->getName() == 'GroupName'){
            echo '<li><a href="http://localhost:8080/test/test.php?id=';
            if(count($attributes) > 0)
            {
                foreach($attributes as $attribute)
                {
                    if($attribute->getName() == 'Id'){
                        echo $attribute;
                    }
                }
            }
            echo '">'.$element.'</a></li>';
        }
    }   

    if(count($children))
    {
        foreach($children as $child)
        {
            parse_recursive($child, $level+1);
        }
    }
    echo '</ul>';
}

$xml = new SimpleXMLElement('main.xml', null, true);
parse_recursive($xml);
?>

这是我的xml结构:

enter image description here

1 个答案:

答案 0 :(得分:1)

您的代码似乎只会为GroupName元素输出任何内容:

if($element->getName() == 'GroupName'){

,它只会输出Id元素的GroupName属性。

源XML中的单个GroupName没有Id属性。