2014-08-30 51 views
0

我有一個特殊標記的XML RSS我不知道如何閱讀的第二部分,在這種情況下,子類別如何閱讀標籤具有兩個屬性

XML RSS:

<?xml version="1.0" encoding="UTF-8"?> 

<channel> 
    <category text="Category"> 
    <category text="Subcategory"/> 
    </category> 
</channel> 

</rss> 

PHP

//this gives the category 
$category = $feed->channel->category->attributes(); 
echo $category . '<br>'; 

//I tried this but only gives category and I need subcategory too 
foreach ($feed->channel->category->attributes() as $item) { 
    echo $item . '<br>'; 
} 

回答

0

那是因爲你有兩個類別元素,而不是兩個屬性;和一類元素是其他類元素的嵌套元素

foreach ($feed->channel->category as $category) { 
    foreach($category->attributes() as $attribute) { 
     echo $attribute . '<br>'; 
    } 

    foreach ($category->category as $subcategory) { 
     foreach($subcategory->attributes() as $attribute) { 
      echo $attribute . '<br>'; 
     } 
    } 
} 

編輯

這可能是更容易理解,如果你的代碼片段是語法正確,適當的縮進

<?xml version="1.0" encoding="UTF-8"?> 
<rss> 
    <channel> 
     <category text="Category"> 
      <category text="Subcategory"/> 
     </category> 
    </channel> 
</rss> 

所以一個category元素可以有「子」元素,也叫做category

+0

有一個{在第二個foreach中丟失。我複製粘貼添加這個,它不起作用,它只給出類別 – Nrc 2014-08-30 13:41:39

+0

剛剛重新編輯,以允許嵌套類別元素 – 2014-08-30 14:00:27

+0

它的工作原理,但我不明白。你能解釋一下嗎?如果他們是兩個元素,爲什麼你需要迭代到達第一個? – Nrc 2014-08-30 14:16:56