我正在尝试读取SimpleXMLElement / XML文件的一部分。 问题是我无论如何都无法获得所需的文本。
我尝试调试我的XML,所以我这样打印:
foreach($response->items as $item) {
fwrite($file, var_export($item, TRUE));
}
输出
的SimpleXMLElement :: __ set_state(阵列( 'item'=> 阵列( 0 => 的SimpleXMLElement :: __ set_state(阵列( 'id'=> '000-1', 'description'=> '笔记本普拉塔', 'quantity'=> '1', 'amount'=> '1830.00', )), 1 => 的SimpleXMLElement :: __ set_state(阵列( 'id'=> 'AB01', 'description'=> 'Notebook Preto', 'quantity'=> '2', 'amount'=> '1340.00', )), ) ))
但是当我尝试检索特定项目内的数据时,返回为空。 我尝试了以下方法:
fwrite($file, $item->amount);
//
fwrite($file, $item->{'amount'});
//
fwrite($file, $items->$item->amount);
但似乎没有任何效果。
如何更正语法,以获得预期的?我希望该文件写成'1830.00'和'1340.00',但我只能得到空白。
答案 0 :(得分:0)
如果你用英文阅读它,这一点似乎是合乎逻辑的,这让你感到愚蠢:
foreach($response->items as $item) {
但它与XML的结构不匹配。
考虑这个XML:
<?xml version="1.0"?><a>
<b>
<c>first C</c>
<c>second C</c>
</b>
</a>
如果$response
是整个文档(<a>...</a>
),那么要访问每个<c>
,您需要执行此操作:
foreach($response->b->c as $c)
您的XML具有相同的结构:
<?xml version="1.0"?><transaction>
...
<items>
<item>first item</item>
<item>second item</item>
</items>
...
</transaction>
所以你的循环必须是:
foreach($response->items->item as $item)
然后<item>
的孩子将按预期使用,例如<amount>
:
echo $item->amount;