Parser un xml "spécial"

Petit nouveau ! | 2 Messages

01 juin 2010, 10:47

Bonjour à tous,

voila j'ai un xml dont je ne peux modifier et je dois parser.

j'ai essayé des techniques, sans succès ..
Si le xml est correct, pouvez vous m'éclairer.

Code : Tout sélectionner

<products> <product name="rehdat"/> <product name="centos"/> </products> <branchs> <branch name="zod"/> <branch name="dos"/> </branchs> <main> <product name="rehdat"> <release version="1" alias="zod" type="released"/> <release version="2" alias="dos" type="released"/> </product> <product name="centos"> <release version="1" alias="zod" type="released"/> <release version="2" alias="dos" type="released"/> </product> </main>
merci

ViPHP
ViPHP | 5462 Messages

01 juin 2010, 10:55

hello, tu peux avec simpleXML ou DomDocument, apres ca depen ce que tu veux récupérer et comment l'afficher ou le traiter

Eléphant du PHP | 314 Messages

01 juin 2010, 11:06

salut,

je n'ai jamais eu à faire cela mais en me référant à la doc j'obtiens un code du genre :
$dom->loadXML($chaineXML);
 
$products = $dom->getElementsByTagName('products')->item(0);
$productList= $products->getElementsByTagName('product');
foreach($productList as $product)
    echo $product->firstChild->getAttribute("name") . "<br />";
Essaies déjà ça, je ne suis pas sur du tout du résultat, ensuite renseigne toi sur XML avec PHP5

PS: Si quelqu'un peut expliquer pourquoi il faut toujours préciser item(0) ou firstChild sur dans le foreach alors que l'element est unique ce serait sympa :p
Cordialement,
Julien - http://laravel.fr/

ViPHP
ViPHP | 5462 Messages

01 juin 2010, 11:31

PS: Si quelqu'un peut expliquer pourquoi il faut toujours préciser item(0) ou firstChild sur dans le foreach alors que l'element est unique ce serait sympa :p
parce que ca te rend toujours un type NodeList même si y'a qu'un seul élément,
tu peux utiliser xpath sinon
$xpath = new DomXPath($dom);
$products = $xpath->query('//products/product');
	
foreach($products as $product)
{
    var_dump($product->getAttribute('name'));
}

Eléphant du PHP | 314 Messages

01 juin 2010, 11:53

Voilà qui est fort intéressant :) Je bookmark ça !
Cordialement,
Julien - http://laravel.fr/

ViPHP
ViPHP | 5462 Messages

01 juin 2010, 13:26

Voilà qui est fort intéressant :) Je bookmark ça !
ouai xpath c'est assez puissant t'as la doc ici : http://www.w3.org/TR/xpath/
tu peux rechercher par rapport a un attribut, le contenu, chercher par exemple : le dernier élément d'un nœud dont le parent contient l'attribut X,
c'est un peu dur appréhension par contre surtout dans des requêtes compliquer, mais le résultat est tout de suis accessible :wink:

Eléphant du PHP | 314 Messages

01 juin 2010, 13:53

Je comprend et connais XPath, j'ignorais juste qu'on pouvais l'utiliser en PHP ! En même temps, comme précisé plus haut, "je n'ai jamais eu à faire cela"
Cordialement,
Julien - http://laravel.fr/

Petit nouveau ! | 2 Messages

01 juin 2010, 14:44

merci pour l'aide.

je me suis orienter vers les DOM, et j'arrive maintenant à extraire les données.
encore merci :D