Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > XML > DOMXML
DOMXML Forum d'entraide pour l'extension DOMXML permettant de manipuler des documents XML en PHP 4 (approche DOM). Avant de poster -> tutoriels DOMXML
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/04/2007, 15h54   #1
Membre à l'essai
 
Inscription : novembre 2005
Messages : 127
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 127
Points : 21
Points : 21
Par défaut [DOMXML] récupération des attributs dans un flux xml

Bonjour,
dans mon formulaire je constitu un flux de données que je récupère dans une autre page.J'aimerai récupérer ces données afin de constituer mon ordre sql.
Voilà mon flux:
Code XML :
1
2
3
4
5
<root>
<critere id="1" letype="IC" lsign="EGA" />
<critere id="2" letype="VO" lsign="SUP" />
<critere id="3" letype="RP" lsign="INF" />
</root>

j'arrives avec un foreach à afficher chaque noeud sans pouvoir m'en servir.En effet j'ai besoin des valeurs de letype et lsign que je mettrai dans deux tableaux afin de les utiliser pour la constitution de mon ordre sql.
Je vous remercie d'avance de votre aide.
opeo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/04/2007, 19h59   #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
D'accord mais pourrait-on avoir votre code et détail des plus importants : l'extension utilisée (SimpleXML, DOM, DOM XML) à moins que vous n'ayez employé autre chose ?
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2007, 09h27   #3
Membre à l'essai
 
Inscription : novembre 2005
Messages : 127
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 127
Points : 21
Points : 21
Merci de votre précision.
Dans mon formuliare je sélectionne mes critères que je mets dans un flux xml
lorsque je soumets le formulaire,je passe le flux par un champ caché.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
<script language="javascript">
 
function ajout_citere(){
var xCrit = new ActiveXObject("MSXML.DomDocument");
xCrit.loadXML("<root />");
 
var xNoeud = xCrit.createElement("critere");   // Création du nouveau noeud...
xNoeud.setAttribute("id", ++cptCrit);          // ... avec ses attributs
xNoeud.setAttribute("letype", letype);
xNoeud.setAttribute("lsign", lesigne);
xCrit.documentElement.appendChild(xNoeud); 
}
 
function valide_form(){
 
document.formulaire.lecritere.value=xCrit.xml
 
document.formulaire.submit();
 
}
<script>
et je le récupère
dans cette page dont voilà le code de récupération.
Puis je l'affiche.Mon souci c'est de pouvoir mettre dans deux tableaux
les valeurs des noeuds attributs dont je connais les noms:letype et lsign.
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
26
27
28
 
<?php 
 
 
	if(!empty($_POST['lecritere'])){
 
		$lecritere=$_POST['lecritere'];
	}
 
	$dom=domxml_open_mem("$lecritere") or die ("Impossible de l'ouvrir");
 
 
 
	$xpath = $dom->xpath_new_context(); 
	$operations = $xpath->xpath_eval('//critere'); 
 
	foreach ($operations->nodeset as $i => $operation) 
		{ 
    		$attributes = $operation->attributes(); 
 
    			foreach ($attributes as $attribute) 
    				{ 
        				echo 'node #', $i, ' ', $attribute->name, ' = ', $attribute->value, '<br />'; 
    				} 
		} 
 
 
?>
j'ai bien l'affichage du n° du noeud, du nom et de la valeur.
je vous remercie de votre aide !
opeo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2007, 16h20   #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
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
<?php
$dom = domxml_open_file("criteres.xml") or die ("Impossible de l'ouvrir");
$operations = $dom->get_elements_by_tagname('critere');
$letype = array();
$lsign = array();
foreach ($operations as $operation)
{
    $letype[] = $operation->get_attribute('letype');
    $lsign[] = $operation->get_attribute('lsign');
}
 
 
echo '<pre>';
print_r($letype);
print_r($lsign);
echo '</pre>';
?>
Par contre la partie XPath sur un document aussi simple n'étant pas justifiée, je l'ai viré Mais si vous souhaitez la garder :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
<?php
$dom=domxml_open_file("criteres.xml") or die ("Impossible de l'ouvrir");
$xpath = $dom->xpath_new_context();
$operations = $xpath->xpath_eval('//critere');
$letype = array();
$lsign = array();
foreach ($operations->nodeset as $operation)
{
    $letype[] = $operation->get_attribute('letype');
    $lsign[] = $operation->get_attribute('lsign');
}
 
 
echo '<pre>';
print_r($letype);
print_r($lsign);
echo '</pre>';
?>
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2007, 16h45   #5
Membre à l'essai
 
Inscription : novembre 2005
Messages : 127
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 127
Points : 21
Points : 21
Merci,
je vais tout de suite corriger mon code.
opeo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2007, 17h35   #6
Membre à l'essai
 
Inscription : novembre 2005
Messages : 127
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 127
Points : 21
Points : 21
Merci ça marche !
opeo est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h01.


 
 
 
 
Partenaires

Hébergement Web