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

时间:2014-09-24 11:07:13

标签: php arrays xml simplexml

我有以下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。

以各种方式用括号替换箭头并不会改变任何东西。

我想,我可以解决&#34;字符串替换的问题,删除数组中的@符号。

有没有办法输出ID而不采取这种相当笨拙的措施?

1 个答案:

答案 0 :(得分:1)

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

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

Sample Output