Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > XML > DOM
DOM Forum d'entraide pour l'extension DOM permettant de manipuler des documents XML en PHP 5 (approche DOM). Avant de poster -> tutoriels DOM
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/05/2007, 17h17   #1
Membre actif
 
Inscription : novembre 2003
Messages : 529
Détails du profil
Informations personnelles :
Âge : 25

Informations forums :
Inscription : novembre 2003
Messages : 529
Points : 152
Points : 152
Par défaut [DOM] problème lors du parcours du fichier xml

Bonjour,

J'ai créer un petit bout de code pour parser un document xml. il fonctionne tip top. Voici mon code :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 
<?php
//création du nouveau document pour la lecture du document xml
$dom = new DomDocument;
$dom->load("donnee.xml");
 
$liste_categorie_produit = $dom->getElementsByTagName('CategoryProductList');
 
foreach($liste_categorie_produit as $categorie_produit)
	{
	$liste_category = $categorie_produit->getElementsByTagName('Category');
	foreach($liste_category as $category)
		{
		$liste_family = $category->getElementsByTagName('Family');
		foreach($liste_family as $family)
			{
			$liste_nom = $family->getElementsByTagName('Name');
			foreach($liste_nom as $nom)
				{
				echo $nom->nodeValue . "<br />";
				}
			}
		}
	}
?>
Mais j'ai un petit problème lorsque dans mon fichier xml il y a par exemple ce cas de figure :

Code XML :
1
2
3
4
5
6
 
<test1>
<test2>
<test1></test1>
</test2>
</test1>

Bon, là ça à l'aire inutile, mais voici l'exemple d'un bout de mon fichier xml que je parse :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE CMS-Data PUBLIC "-//Toshiba//DTD cms bv data V1.0//EN" "CMS-BV-Data.dtd">
<CMS-Data Version="1.0">
	<Head>
		<Meta Name="date" Content="2007-05-10 03:54:33"/>
	</Head>
	<Country DBkey="16179">Switzerland</Country>
	<Language DBkey="16181">Swiss-French</Language>
	<CategoryProductList>
		<Category DBkey="2319">
			<Name>Notebooks</Name>
			<Family DBkey="104264" Created="2005-05-25" Modified="2005-05-25" Removed="N">
				<Name>Libretto</Name>
				<Description>Libretto</Description>
				<Series DBkey="104265" Created="2005-05-25" Modified="2005-05-25" Removed="N">
On peut voire qu'il y a la balise name à plusieurs niveau, mais j'aimerais récupérer dans un premier temps que celle du premier niveau, et m'arrêter à ce niveau là, mais il ne le fait pas, il récupère toutes les autres balise name.

J'espère que je suis assez claire, mais c'est pas facile a expliquer.

Est-ce que quelqu'un pourrait m'aider?

Merci d'avance pour votre aide

krfa1
__________________
Quand on sait ce qu'on sait, qu'on entend ce qu'on entend, on est bien content de penser ce qu'on pense!!!

Mon site web
krfa1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/05/2007, 18h59   #2
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
En recourant à une expression XPath ?
Code :
1
2
3
4
5
6
7
8
<?php
$dom = DomDocument::load('doc.xml');
$xpath = new DOMXPath($dom);
$noms = $xpath->evaluate('/CMS-Data/CategoryProductList/Category/Name');
foreach ($noms as $nom) {
    echo $nom->nodeValue . '<br/>';
}
?>
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2007, 07h24   #3
Membre actif
 
Inscription : novembre 2003
Messages : 529
Détails du profil
Informations personnelles :
Âge : 25

Informations forums :
Inscription : novembre 2003
Messages : 529
Points : 152
Points : 152
Hello, merci pour les infos. Ca fonctionne, mais je dois avouer que c'est assez flou pour moi tout ce qui touche autour de la manière de parser du xml. Est-ce que quelqu'un aurait un bon tuto a m'indiquer, car j'ai trouver celui de développez, mais il n'est pas très complet, ça explique les bases.

Car par exemple j'aimerais pouvoir lister tous les enfants de la branche /CMS-Data/CategoryProductList/Category/Family/Series/Name, par exemple.

Merci d'avance.
__________________
Quand on sait ce qu'on sait, qu'on entend ce qu'on entend, on est bien content de penser ce qu'on pense!!!

Mon site web
krfa1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h08.


 
 
 
 
Partenaires

Hébergement Web