从多个具有属性的相似标签中读取值

Read value from multiple similar tags with attributes

我有一个 .xml 文件,如下所示:

<Products>
<Product>
    <Denumire>Carcasa rigida THULE Legend GoPro, black (TLGC101)</Denumire>
    <Cod>TLGC101</Cod>

    <Atribut denumire="Tip">geanta/husa</Atribut>
    <Atribut denumire="Compatibilitate">GoPro</Atribut>
    <Atribut denumire="Dimensiuni">150 x 210 x 80 mm (exterior), 35 x 185 x 125 mm (interior)</Atribut>
    <Atribut denumire="Greutate">0.24 kg</Atribut>
    <Atribut denumire="Culoare">negru</Atribut>
    <Atribut denumire="Altele">interior spuma EVA</Atribut>
    <Atribut denumire="Cod">TLGC101</Atribut>
</Product>

我只是找不到提取 "Atribut" 标签("geanta/husa"、"GoPro" 等)的值的方法。我的代码如下所示:

    $products = simplexml_load_file("http://abc.xyz/feed.xml");
foreach($products->Product as $prod)
    {   
        foreach($prod->Atribut as $key=>$atr)
            {
                //extract the value for "denumire" attribute
                $nume_atribut = (string)$atr->attributes()[0];

                //get the value of the "Atribut" tag
            }
    }

转储 $prod->Atribut 给我:

object(SimpleXMLElement)#6 (8) {
  ["@attributes"]=>
  array(1) {
    ["denumire"]=>
    string(3) "Tip"
  }
  [0]=>
  string(11) "geanta/husa"
  [1]=>
  string(5) "GoPro"
  [2]=>
  string(58) "150 x 210 x 80 mm (exterior), 35 x 185 x 125 mm (interior)"
  [3]=>
  string(7) "0.24 kg"
  [4]=>
  string(5) "negru"
  [5]=>
  string(18) "interior spuma EVA"
  [6]=>
  string(7) "TLGC101"
}

... 转储 $prod->Atribut[0] 时给出:

object(SimpleXMLElement)#8 (1) { ["@attributes"]=> array(1) { ["denumire"]=> string(3) "Tip" } }

非常感谢!

直接使用SimpleXMLElement的方法__toString即可:

$atr->__toString() 

或者使用类型转换(实际上它会在内部使用 __toString):

(string)$atr