2010-04-25 4 views
4

J'ai un fichier XML qui a besoin d'être analysé en PHP. Je currenlty utilise simplexml_load_file pour charger le fichier comme ceci:Analyser les sous-éléments XML en utilisant foreach()

$xml = simplexml_load_file('Project.xml'); 

Dans ce fichier XML est une structure comme celle-ci:

<?xml version="1.0" encoding="ISO-8859-1"?> 
<project> 
<name>Project 1</name> 
<features> 
    <feature>Feature 1</feature> 
    <feature>Feature 2</feature> 
    <feature>Feature 3</feature> 
    <feature>Feature 4</feature> 
</features> 
</project> 

Ce que je suis en train de faire est d'imprimer le <name> contenu avec chaque <feature> élément dans <features>. Je ne suis pas sûr de savoir comment faire cela car il y a plus d'un élément appelé <feature>. Toute aide est grandement appréciée.

Répondre

10

pour imprimer le texte, essayez ceci:

foreach($xml->features->feature as $key => $value) 
{ 
    echo $value; 
} 
+0

Fonctionne parfaitement, merci. – user

0

Vous pouvez faire:

foreach($xml->features->feature as $f) { 
    echo $f."\n"; 
} 
1

simplexml_load_file() retourne un objet.

Jetez un oeil à la structure avec var_dump ($ xml):

object(SimpleXMLElement)#1 (2) { 
    ["name"]=> 
    string(9) "Project 1" 
    ["features"]=> 
    object(SimpleXMLElement)#2 (1) { 
    ["feature"]=> 
    array(4) { 
     [0]=> 
     string(9) "Feature 1" 
     [1]=> 
     string(9) "Feature 2" 
     [2]=> 
     string(9) "Feature 3" 
     [3]=> 
     string(9) "Feature 4" 
    } 
    } 
} 

Alors code comme ceci:

<?PHP 
$xml = simplexml_load_file('test.xml'); 
echo $xml->name . "\n"; 
foreach($xml->features->feature as $f){ 
    echo "\t$f\n"; 
} 

produira une sortie comme:

Project 1 
    Feature 1 
    Feature 2 
    Feature 3 
    Feature 4 

Ce qui est ce que je suppose que vous êtes après, plus ou moins.

Questions connexes