【问题标题】:How to read data from XML using simplexml_load_string如何使用 simplexml_load_string 从 XML 读取数据
【发布时间】:2018-06-03 00:43:24
【问题描述】:

我想显示我的 XML 中的一些数据。这是我的 XML:

[@attributes] => Array (
[id] => 2065 )
[price] => Array (
    [@attributes] => Array (
    [gross] => 1259.16
    [net] => 1023.71
    [vat] => 23.0 )
    )
[srp] => Array (
    [@attributes] => Array (
    [gross] => 1499.00
    [net] => 1218.7
    [vat] => 23.0 )
    )
[sizes] => Array (
    [size] => Array (
        [@attributes] => Array (
        [id] => 0
        [code_producer] => 33124.16.EN
        [code] => 2065-0
        [weight] => 999 )
        [stock] => Array (
            [@attributes] => Array (
            [id] => 1
            [quantity] => 1
            )
        )
    )

我想从中获得价值:

  • [id] => 2065,
  • [价格][净价] => 1023.71,
  • [尺寸][尺寸][库存][数量] => 1.

在阅读了以下cmets之后,我修改了我的代码。但是,我还是不行,我不明白如何获取属性值。

foreach ($xmlArray AS $produkt) {
        foreach ($produkt AS $abc) {
            foreach ($abc AS $singleValue) {

                $data[] = array('net' => (string)$singleValue->price['net']);
            }
        }
    }
    return $data;

输出:Array ( [0] => Array ( [net] => b ) [1] => Array ( [net] => ) [2] => Array ( [net] => ) ) 1

问题是,我不知道应该使用多少次 foreach 而这个参数@attributes 对我来说很奇怪。感谢您的帮助。

亲切的问候

【问题讨论】:

  • 请包含原始 XML(不是输出已处理文档的结果) - 使用起来更容易。

标签: php arrays xml simplexml


【解决方案1】:

SimpleXML 不产生数组,它产生一个对象。使用方法请查看basic examples in the manual

调试输出中的@attributes 只是将子属性与元素分开,实际上并不是访问它们的方式。

看看你的调试输出,看起来你真正想要的是这样的:

foreach ( $xml_object->products->product as $product ) {
     $data[] = array('net' => (string)$product->price['net']);
     $data[] = array('net' => (string)$product->srp['net']);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-29
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多