2014-09-24 53 views
1

我有下面的XML:屬性在由SimpleXML的創建陣列被顯示爲NULL

<category-links> 
    <category-link id="2350"> 
     <name locale="de">Wasserkocher</name> 
    </category-link> 
</category-links> 

我已經把它變成用SimpleXML陣列,並且將結果看起來像這樣:

[category-links] => SimpleXMLElement Object 
    (
     [category-link] => SimpleXMLElement Object 
      (
       [@attributes] => Array 
        (
         [id] => 2350 
        ) 

       [name] => Wasserkocher 
      ) 

    ) 

我想輸出如下:

<tr> 
    <td>category-link > id</td> 
    <td><?= $p->{'category-links'}->{'category-link'}->{'@attributes'}->id ?></td> 
</tr> 
<tr> 
    <td>category-link > name</td> 
    <td><?= $p->{'category-links'}->{'category-link'}->name ?></td> 
</tr> 

只有name給出了預期的結果(Wasserkoche r),而id沒有顯示任何內容。

var_dump($p->{'category-links'}->{'category-link'}->{'@attributes'}->id) 

給出NULL。

以各種方式用方括號代替箭頭不會改變任何內容。

我想,我可以「解決」一個字符串替換問題,刪除數組中的@符號。

有沒有什麼方法可以輸出ID而不會做出這種相當笨拙的措施?

回答

1

否,訪問屬性的方法是使用->attributes()方法:

<td><?= $p->{'category-links'}->{'category-link'}->attributes()->id; ?></td> 

Sample Output

+1

http://php.net/manual/en/simplexmlelement.attributes.php – Watchduck 2014-09-24 11:23:36