【问题标题】:How to output all XML element attributes using a foreach loop?如何使用 foreach 循环输出所有 XML 元素属性?
【发布时间】:2013-11-21 14:51:34
【问题描述】:

这里是 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>

注意每个&lt;item&gt; 元素都有不同数量的属性。

我一直在尝试使用 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->属性();只给了我元素的第一个属性。 输出如下所示:

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

我错过了什么?

【问题讨论】:

  • 感谢 Amal,嵌套的 foreach 可以工作,但这个 XML 只是更大 XML 文件的一小部分。我不想对文件的其余部分造成循环。如果有意义的话,我正在寻找类似 var_dump 的东西......
  • 好的,预期的输出是什么?
  • 所有属性,一个接一个(或每行 - 没关系),例如:chair table cabinet shelf box frame。这基本上是每个&lt;item&gt; 元素中的所有属性。

标签: php xml xpath


【解决方案1】:

使用嵌套的foreach 循环:

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

【讨论】:

    猜你喜欢
    • 2016-11-09
    • 1970-01-01
    • 2017-05-01
    • 2016-11-05
    • 2021-11-02
    • 2014-11-11
    • 1970-01-01
    • 2021-05-14
    • 2020-05-30
    相关资源
    最近更新 更多