Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > XML > SimpleXML
SimpleXML Forum d'entraide pour l'extension SimpleXML, qui permet de manipuler des documents XML en PHP (approche 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 17/12/2007, 03h37   #1
Invité de passage
 
Inscription : septembre 2007
Messages : 22
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 22
Points : 3
Points : 3
Par défaut [SimpleXML] Retourner la somme de certains prix

Bonjour,

Je souhaite calculer le total des prix que j'ai dans mon fichier xml qui est le suivant:

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"?>
<root>
  <livre id="1">
    <article>Article 1</article>
    <prix>20</prix>
  </livre>
  <livre id="2">
    <article>Article 2</article>
    <prix>50</prix>
  </livre>
  <livre id="3">
    <article>Article 3</article>
    <prix>28</prix>
  </livre>  
</root>

J'utilise le "simplexml_load_file" pour charger mon fichier xml.

J'ai essayé le fonction xpath "sum->xpath(//livre/prix)", mais ca ne fonctionne pas, seul "count" fonctionne.

J'ai fait des recherches sur google, mais ca m'envoie des liens sur le XSL, alors que je ne veux pas passer par du XSL.

Avez-vous des suggestions ou des bon liens qui montre comment faire des requetes avec des fonctions "simple_xml". Des requetes qui ressemblent à celle qu'on utilise dans SQL: sum, moy, etc.., sans passer par des boucles foreach ou while, car par exemple avec la fonction count de xpath, ca retourne le total des noeuds existant dans le fichier xml, sans passer par une boucle foreach, while ou for.

Merci,
dorwin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2007, 11h12   #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
Lisez attentivement la documentation de la méthode xpath : celle-ci n'est prévue que pour renvoyer des objets SimpleXMLElement (correspondants à des noeuds - nodeset). Pas à faire ce genre de calcul Ne vous reste que l'extension DOM ...
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2007, 17h34   #3
Invité de passage
 
Inscription : septembre 2007
Messages : 22
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 22
Points : 3
Points : 3
Citation:
Envoyé par julp Voir le message
Ne vous reste que l'extension DOM ...
Est-ce que je peux travailler avec le simple_xml et le dom en même temps, ou bien c'est l'un ou l'autre, car j'ai déjà commencer à manipuler mon fichier xml avec le simple_xml

Merci
dorwin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2007, 17h41   #4
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
Oui :
Citation:
dom_import_simplexml — Transforme un objet DOMElement en un objet SimpleXMLElement
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2007, 04h32   #5
Nouveau Membre du Club
 
Inscription : décembre 2006
Messages : 190
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 190
Points : 32
Points : 32
Citation:
Envoyé par julp Voir le message
Oui :
Salut julp,

Apparement, il n'y a aucune fonction dom qui permet de faire ce que je voulais:
"retourner le total (somme) des prix ".

Je pense que je serai obligé de créer mon propre algorithme qui me permettra de calculer le total des valeurs qui se trouve dans le noeud prix.

Qu'est-ce-t'en pense ? À moins que tu connais déjà une fonction propre à domxml qui me permet de calculer le total, car moi je ne l'ai pas trouvé

Merci.
persia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2007, 11h17   #6
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
sum est une fonction XPath. En reprenant le document XML initialement donné :
Code :
1
2
3
4
5
6
<?php
$dom = new DomDocument;
$dom->load('fichier.xml');
$xpath = new DomXPath($dom);
$sum = $xpath->evaluate('sum(/root/livre/prix)');
echo $sum;
Résultat :
Citation:
98

Dédoublement de personnalité ?
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2008, 02h12   #7
Nouveau Membre du Club
 
Inscription : décembre 2006
Messages : 190
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 190
Points : 32
Points : 32
Par défaut Jonction de 2 fichier xml

Bonjour Julp,

Je voulais savoir si on pouvait traiter en même temps sur deux fichiers xml.

Exemple:

File1.xml:
Code :
1
2
3
4
5
6
7
8
9
10
<?xml version="1.0" encoding="ISO-8859-1"?>
<root>
  <livre id="1">
    <article>Article 1</article>
    <prix>20</prix>
  </livre>
  <livre id="2">
    <article>Article 2</article>
    <prix>50</prix>
</root>
File2.xml:
Code :
1
2
3
4
5
6
7
8
9
10
<?xml version="1.0" encoding="ISO-8859-1"?>
<root>
  <livre id="1">
    <disponible>Oui</disponible>
    <etat>usagé</etat>
  </livre>
  <livre id="2">
    <disponible>Non</disponible>
    <etat>neuf</etat>
</root>

Donc ce que je veux faire par exemple c'est d'afficher le prix (se trouvant dans Fichier1) et l'état (se trouvant dans le fichier 2) du livre avec l'id "1".

Est-ce possible, si oui, j'aimerai savoir comment.

Merci
persia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2008, 12h04   #8
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
Citation:
Envoyé par persia
Je voulais savoir si on pouvait traiter en même temps sur deux fichiers xml.
Non, il vous faudra le cas échéant les traiter en "parallèle", et ce, peu importe le moyen (2 documents = 2 objets SimpleXMLElement distincts). Pourquoi ne sont-ils pas "fusionnés" ?
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2008, 00h56   #9
Nouveau Membre du Club
 
Inscription : décembre 2006
Messages : 190
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 190
Points : 32
Points : 32
Citation:
Envoyé par julp Voir le message
Pourquoi ne sont-ils pas "fusionnés" ?
Car je veux tout simplement avoir 2 fichiers séparés.

Je pensais qu'on pouvait extraire des données provenant d'un même id se trouvant dans 2 fichiers séparées, comme c'est le cas avec les tables mysql.

Apparement, ce n'est pas le cas avec du xml.

Merci comme même.
persia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2008, 00h08   #10
Invité de passage
 
Inscription : septembre 2007
Messages : 22
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 22
Points : 3
Points : 3
Par défaut Mes anciens tuto ??

Salut julp,

J'aimerais savoir pourquoi on a effacé mes anciens tutos concernant la manipulation du fichier xml avec php.

Je voulais les consulter, et là il ne sont plus dans mon tableau de bord !!


Persia !!!!
dorwin 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 13h23.


 
 
 
 
Partenaires

Hébergement Web