2013-11-21 60 views
0

這裏是XML的新手。如何使用foreach循環輸出所有XML元素屬性?

考慮這個簡單的XML模式:

<products> 
    <category name="furniture"> 
       <item name="chair" name2="table"> 
          <size> 
           <small>10</small> 
           <large>20</large> 
          </size> 
       </item> 
       <item name="cabinet"> 
          <size> 
           <small>15</small> 
           <large>30</large> 
          </size> 
       </item> 
       <item name="shelf" name2="box" name3="frame"> 
          <size> 
           <small>5</small> 
           <large>10</large> 
          </size> 
       </item> 
    </category> 
</products> 

通知每個<item>元件具有不同量的屬性。

我一直在試圖使用XPATH和foreach循環沒有成功回顯屬性。 當然,我錯過了一小段語法。

$dom=simplexml_load_file("file.xml"); 

foreach ($dom->xpath("/products/category[@name='furniture']/item") as $parse)  
    echo'<tr><td>'.$parse->attributes().'</td></tr>';       

$ parse-> attributes();只給了我元素的第一個屬性。 輸出看起來是這樣的:

<tr><td>chair</td></tr> 
<tr><td>cabinet</td></tr> 
<tr><td>shelf</td></tr> 

我缺少什麼?

+0

感謝阿邁勒,嵌套的foreach的工作,但這個XML僅僅是一個更大的XML文件的一小部分。我不想在文件的其餘部分造成循環。我正在尋找var_dump的內容,如果這很有意義... – LifeQuery

+0

好的,預期的輸出是什麼? –

+0

所有的屬性,一個接一個(或每行 - 無所謂),例如:'椅子桌櫃擱架框架'。這基本上都是每個「」元素中的所有屬性。 – LifeQuery

回答

0

使用嵌套循環foreach

foreach ($dom->xpath("/products/category[@name='furniture']/item") as $parse) { 
    foreach ($parse->attributes() as $attr) { 
     echo '<tr><td>'. $attr . '</td></tr>'."\n"; 
    } 
}