SimpleXML创建的数组中的属性显示为NULL


Attributes in array created by SimpleXML are displayed as NULL

我有以下XML:

<category-links>
    <category-link id="2350">
        <name locale="de">Wasserkocher</name>
    </category-link>
</category-links>

我用SimpleXML把它变成了一个数组,结果如下:

[category-links] => SimpleXMLElement Object
    (
        [category-link] => SimpleXMLElement Object
            (
                [@attributes] => Array
                    (
                        [id] => 2350
                    )
                [name] => Wasserkocher
            )
    )

我想输出以下内容:

<tr>
    <td>category-link > id</td>
    <td><?= $p->{'category-links'}->{'category-link'}->{'@attributes'}->id ?></td>
</tr>
<tr>
    <td>category-link > name</td>
    <td><?= $p->{'category-links'}->{'category-link'}->name ?></td>
</tr>

只有name给出了预期的结果(Wasserkocher),而id没有显示任何结果。

var_dump($p->{'category-links'}->{'category-link'}->{'@attributes'}->id)

给出NULL。

以各种方式用括号代替箭头不会改变任何事情。

我想,我可以用字符串替换来"解决"这个问题,删除数组中的@符号。

有没有什么方法可以在不进行这种相当笨拙的测量的情况下输出ID?

否,访问属性的方法是使用->attributes()方法:

<td><?= $p->{'category-links'}->{'category-link'}->attributes()->id; ?></td>

样本输出