Analyse XML en PHP

<?php $xmlstr = <<<XML <books> <book> <title>Great American Novel</title> <plot> Cliff meets Lovely Woman. </plot> <success type="bestseller">4</success> <success type="bookclubs">9</success> </book> <book> <title>Man Bites Dog</title> <plot> Reporter invents a prize-winning story. </plot> <success type="bestseller">22</success> <success type="bookclubs">3</success> </book> </books> XML; ?> <?php $xml = new SimpleXMLElement($xmlstr); foreach ($xml->book[0]->success as $success) { switch((ssortingng) $success['type']) { case 'bestseller': echo $success, ' months on bestseller list<br />'; break; case 'bookclubs': echo $success, ' bookclub listings<br />'; break; } } ?> 

J'ai coupé pour coller ce code à partir d'un site de tutoriel, donc ça fonctionne bien. J'essaie de le modifier pour mes propres moyens. Mais je ne peux pas l'obliger à faire ce que je veux. J'essaie d'imprimer, tous les types de réussite, pas seulement la première instance. Cette alimentation xml n'a que deux livres, titres, l'alimentation xml que j'essaie d'parsingr a beaucoup plus, mais la structure est la même, et les seuls résultats que j'obtiens pour imprimer sont 4 et 9, qui sont les le premier titre de livre.

Cette ligne est votre problème:

 foreach ($xml->book[0]->success as $success) 

Votre referencement du premier élément du tableau de cabine avec "livre [0]". Vous devrez changer cela à quelque chose comme:

 foreach ($xml->book as $book) { foreach($book->success as $success) { // switch/case goes here } } 

Aussi, note de côté, assurez-vous que chaque ligne de code que vous tapez sur stackoverflow est indentée avec 4 espaces ou plus, de sorte que le site se rend count que c'est un code et ne le gagne pas

Votre code ne se fait que par le premier livre (livre [0]). Vous devez la modifier pour itérer dans tous les livres d'abord.

 foreach ($xml->book as $book){ foreach ($book->success as $success) { switch((ssortingng) $success['type']) { 

Vous pouvez utiliser print_r () pour déboguer à peu près n'importe quelle section d'un object SimpleXML.