Parser xml

Fermé
powpowland Messages postés 396 Date d'inscription lundi 3 mars 2008 Statut Membre Dernière intervention 2 mars 2022 - 8 avril 2011 à 14:46
ktm620enduro Messages postés 293 Date d'inscription mardi 21 septembre 2010 Statut Membre Dernière intervention 12 mars 2013 - 8 avril 2011 à 15:06
Bonjour,

Je parse un fichier XML avec ce bout de code :

$url = 'xml/test.xml';
		if (file_exists($url)) {
    $xml = simplexml_load_file($url);
	//print_r($xml);
	$num=0;
	$test=array();
	
	foreach ($xml->Item as $value){
    $num++;
	if(iconv( "UTF-8", "ISO-8859-1//TRANSLIT", $value->Visible)!=0)
	$restos[] = '<tr class="liensListe"><td colspan="3"><a href="détails.php?id='.iconv( "UTF-8", "ISO-8859-1//TRANSLIT", $value->Id).'">
	<b>'.strtoupper(iconv( "UTF-8", "ISO-8859-1//TRANSLIT", $value->Titre->Contenus->Contenu )).'</b>
<br>'.substr(nl2br(iconv( "UTF-8", "ISO-8859-1//TRANSLIT", $value->Resume->Contenus->Contenu)), 0, 100).'...</td><td width="40px"><img src="img/details.png"></a></td></tr>
	<tr><td colspan="4" height="10px"></td></tr>';
}


Avec ce fichier XML de ce type, non modifiable car je n'en suis pas le propriétaire :

<ExportItem>
<Item>

<Id>1</Id>

<Titre>
<Contenus xmlns="">
<Contenu IdLangue="fr">Test</Contenu>
<Contenu IdLangue="uk">Testing</Contenu>
</Contenus>
</Titre>

<Visible>1</Visible>

<Diffusion>1</Diffusion>

<Resume>
<Contenus xmlns="">
<Contenu IdLangue="fr">Un petit texte</Contenu>
<Contenu IdLangue="uk">A little text.</Contenu>
</Contenus>
</Resume>

</Item>
</ExportItem>


Je veux en faite récupérer les IdLangue... Comment peut-on faire ?

je verrais bien un strstr() mais je ne vois pas trop comment récupérer la chaine de caractères dans le nom de l'élément...

si vous pouvez m'aider ça serait cool...

A voir également:

2 réponses

ktm620enduro Messages postés 293 Date d'inscription mardi 21 septembre 2010 Statut Membre Dernière intervention 12 mars 2013 38
Modifié par ktm620enduro le 8/04/2011 à 15:05
$k=file_get_contents($url);  
if (preg_match('#^<item>[^>]*>([^<]*)[^"]*"([^"]*)">[^>]*>([^>]+)>[^>]*>([^>]+)>[^>]*>[^>]*>[^>]*>([^<]*)[^>]*>[^>]*>([^<]*)[^>]*>[^>]*>[^"]*"([^"]*)">[^"]*"([^"]+)">([^<]*)[^"]*"([^"]+)">([^<]*)[^>]*>[^>]*>[^>]*>\s*<\/item>#i',$k,$result))  
print_r($result);
0
ktm620enduro Messages postés 293 Date d'inscription mardi 21 septembre 2010 Statut Membre Dernière intervention 12 mars 2013 38
8 avril 2011 à 15:06
si tu as plusieurs items tu rajoute "_all" apres le preg_match , ce qui donne preg_match_all
0
totofrancois Messages postés 398 Date d'inscription jeudi 19 novembre 2009 Statut Membre Dernière intervention 2 août 2013 44
8 avril 2011 à 15:05
fait un print_r($xml) et après tu parcourt comme avec un tableau
0