如何使用foreach循环输出所有XML元素属性?

时间:2013-11-21 14:51:34

标签: php xml xpath

这里是XML的新手。

考虑这个简单的XML架构:

<products>
    <category name="furniture">
                <item name="chair" name2="table">
                            <size>
                                <small>10</small>
                                <large>20</large>
                            </size>
                </item>
                <item name="cabinet">
                            <size>
                                <small>15</small>
                                <large>30</large>
                            </size>
                </item>
                <item name="shelf" name2="box" name3="frame">
                            <size>
                                <small>5</small>
                                <large>10</large>
                            </size>
                </item>
    </category>
</products>

请注意,每个<item>元素都有不同的属性。

我一直试图使用XPATH和foreach循环来回显这些属性而没有成功。 当然,我错过了一小段语法。

$dom=simplexml_load_file("file.xml");

foreach ($dom->xpath("/products/category[@name='furniture']/item") as $parse)     
    echo'<tr><td>'.$parse->attributes().'</td></tr>';                           

$ parse-&GT;属性();只给我元素的第一个属性。 输出如下:

<tr><td>chair</td></tr>
<tr><td>cabinet</td></tr>
<tr><td>shelf</td></tr>

我错过了什么?

1 个答案:

答案 0 :(得分:0)

使用嵌套的foreach循环:

foreach ($dom->xpath("/products/category[@name='furniture']/item") as $parse) {
    foreach ($parse->attributes() as $attr) {
        echo '<tr><td>'. $attr . '</td></tr>'."\n";   
    }
}