SimpleXMLElement对象数组上每个循环的输出,循环外的一个节点

时间:2016-10-18 01:04:11

标签: php xml simplexml

我试图遍历一个由simplexml_load_file创建的数组,当我在每个循环中访问我的数组时,我得到了预期的结果,

print_r ($feedobject->Item[0]->attributes())`;

输出:

SimpleXMLElement Object
(
    [@attributes] => Array
        (
            [ID] => 202fnl
            [TableID] => newitem
        )
)

通过我的每个循环访问时

foreach ($feedobject->Item[$x] as $value) {
    print_r ($value->attributes());    
$x++;
}

我得到意想不到的结果(进一步进入数组)

SimpleXMLElement Object
(
    [@attributes] => Array
        (
            [TableFieldID] => description
            [Value] => Our 2-ounce plastic funnel is the perfect fit for our 8-ounce stainless steel flasks. It works!
        )
)

Xml文件看起来像

  <Item ID="202fnl" TableID="newitem">
        <ItemField TableFieldID="description" Value="Our 2-ounce plastic funnel is the perfect fit for our 8-ounce stainless steel flasks. It works!"/>

为什么会发生这种情况,是否有人有更好的建议来循环遍历此数组的特定元素?

1 个答案:

答案 0 :(得分:1)

您对元素选择感到困惑。要获取每个<Item>,只需使用$feedobject->Item

// select each `<Item>`
foreach ($feedobject->Item as $value) {
    echo $value->attributes()->ID;
}

当您使用$feedobject->Item[$x] as $value时,这已经直接指向<Item>内显示<ItemField>的元素。