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

时间:2015-12-01 09:28:47

标签: php simplexml

我有一个.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>

我无法找到提取&#34; Atribut&#34;的价值的方法。标签(&#34; geanta / husa&#34;,&#34; GoPro&#34;依此类推)。我的代码如下所示:

    $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-&gt; 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-&gt; Atribut [0]时给出:

  

object(SimpleXMLElement)#8(1){[&#34; @ attributes&#34;] =&gt; array(1){       [&#34; denumire&#34;] =&GT;       string(3)&#34; Tip&#34; }}

非常感谢!

1 个答案:

答案 0 :(得分:1)

直接使用SimpleXMLElement的方法__toString:

$atr->__toString() 

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

(string)$atr