php - 使用 php foreach 提取 XML 没有循环
问题描述
我正在尝试制作这个循环,但它只返回第一个值。
XML
<catalog>
<dd>
<categoryassignment categoryid="3d-magic" productid="000000000000109330_PURPLE/ BLUE"/>
<categoryassignment categoryid="3d-magic" productid="000000000000109330_PURPLE/ BLUE/ ORANGE"/>
<categoryassignment categoryid="3d-magic" productid="000000000000109330_RED/ GREEN/ YELLOW"/>
<categoryassignment categoryid="3d-magic" productid="000000000000109335_BLUE/YELLOW"/>
<categoryassignment categoryid="3d-magic" productid="000000000000109335_PURPLE/ORANGE"/>
<categoryassignment categoryid="3d-magic" productid="000000000000115881_GREEN/PURPLE"/>
<categoryassignment categoryid="3d-magic" productid="000000000000115881_ORANGE/BLUE"/>
<categoryassignment categoryid="3d-magic" productid="000000000000115881_RED/YELLOW"/>
<categoryassignment categoryid="3d-magic" productid="000000000109329001"/>
<categoryassignment categoryid="3d-magic" productid="000000000109329002"/>
<categoryassignment categoryid="3d-magic" productid="000000000109335001"/>
<categoryassignment categoryid="3d-magic" productid="000000000111568001"/>
<categoryassignment categoryid="3d-magic" productid="000000000111568002"/>
</dd>
PHP
$xml=simplexml_load_file("store.xml") or die("Failed to create an object");
foreach($xml->children() as $books) {
echo $books->categoryassignment['categoryid'];echo $books->categoryassignment['productid'];echo "<br>";}
从这里的例子:https ://www.w3schools.com/php/php_xml_simplexml_get.asp
解决方案
您需要更改引用数据的方式。如果您首先通过执行以下操作进行快速调试:
print_r($xml);
你会看到你有一个像这样的对象:
SimpleXMLElement Object
(
[dd] => SimpleXMLElement Object
(
[categoryassignment] => Array
(
[0] => SimpleXMLElement Object
(
[@attributes] => Array
(
[categoryid] => 3d-magic
[productid] => 000000000000109330_PURPLE/ BLUE
)
)
[1] => SimpleXMLElement Object
(
[@attributes] => Array
(
[categoryid] => 3d-magic
[productid] => 000000000000109330_PURPLE/ BLUE/ ORANGE
)
)
... etc ...
有了这些知识,您就可以轻松查看需要将foreach
. 它会是这样的($books
内部略有变化):
foreach($xml->dd->categoryassignment as $books) {
echo $books['categoryid'];
echo ' ';
echo $books['productid'];
echo "<br>\n";
}
结果是:
3d-magic 000000000000109330_PURPLE/ BLUE 3d-magic 000000000000109330_PURPLE/ BLUE/ ORANGE 3d-magic 000000000000109330_RED/ GREEN/ YELLOW 3d-magic 000000000000109335_BLUE/YELLOW 3d-magic 000000000000109335_PURPLE/ORANGE 3d-magic 000000000000115881_GREEN/PURPLE 3d-magic 000000000000115881_ORANGE/BLUE 3d-magic 000000000000115881_RED/YELLOW 3d-magic 000000000109329001 3d-magic 000000000109329002 3d-magic 000000000109335001 3d-magic 000000000111568001 3d-magic 000000000111568002
推荐阅读
- kotlin - 我很困惑为什么不能在片段类中调用意图
- javascript - Javascript DOM,如何确定触发了哪个事件侦听器?
- excel-formula - 查找,三个 if 结果
- sql - 如何根据 SQL 中的字符串分组分配值?
- metpy - ArtistAnimation 使用 contourf 绘制模型图
- javascript - 添加 chart.js 时应用程序不再正确显示
- java - 我需要对我的算法进行评论,以在二叉树中找到最长的连续序列
- python-requests - 当我从 python 调用端点时返回 403 错误 - 我做错了什么?
- python - 当使用 if 循环 vs while 循环时,为什么 if-loop 更早中断
- javascript - 将 self.kwindow var 传递给导入的函数