Précédent   Forum des professionnels en informatique > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
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 14/02/2011, 14h11   #1
Invité régulier
 
Inscription : janvier 2011
Messages : 27
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 27
Points : 6
Points : 6
Par défaut script création XML

Bonjour a tous,
tout d'abord excusez moi si ce n'est pas dans la bonne section.

Mon problème est le suivant T_CONSTANT_ENCAPSED_STRING.
Une erreur de syntaxe, et croyez moi j'ai testé pas mal de chose pour la régler.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
			$monxml = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"";
			foreach ($donnees as $don){
				$monxml.=*"<carte>
					<item>
						<myFere>".$don[0]."</myFere>
						<affectation>".$don[1]."</affectation>
						<motif>".$don[2]."</motif>
						<dateDemande>".$don[3]."</dateDemande>
						<utilisateur>".$don[4]."</utilisateur>
					</item>
				</carte>"; 
			};
l'erreur se passe ligne à la ligne
Code :
<myFere>".$don[0]."</myFere
.
J'ai testé avec ' ou " sans les . ou avec. Pourtant j'ai toujours la même erreur.

Si quelqu'un pouvais m'expliquer.

Je vous remercie d'avance.
Azaxx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 14h22   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 466
Points : 8 466
bizarre le .=*

sinon je te conseil plutôt d'utiliser SimpleXML pour créer ton XML :
http://www.php.net/manual/fr/simplex...t.addchild.php
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 14h34   #3
Invité régulier
 
Inscription : janvier 2011
Messages : 27
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 27
Points : 6
Points : 6
pour le .=* c'est juste une faute de frappe lorsque je jouais avec mes " ou '.
L'erreur ne viens pas de la.

Sinon mise a part ça pour toi, le code te semble correcte ?
Azaxx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 14h50   #4
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 466
Points : 8 466
Citation:
Envoyé par Azaxx Voir le message
pour le .=* c'est juste une faute de frappe lorsque je jouais avec mes " ou '.
L'erreur ne viens pas de la.

Sinon mise a part ça pour toi, le code te semble correcte ?
oui ca me semble correct essaye avec du HEREDOC
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 15h03   #5
Invité régulier
 
Inscription : janvier 2011
Messages : 27
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 27
Points : 6
Points : 6
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
			$monxml = <<<_FIN_
"<?xml version=\"1.0\" encoding=\"ISO-8859-1\"";
			foreach ($donnees as $don){
				$monxml.="<carte>
					<item>
						<myFere>".$don[0]."</myFere>
						<affectation>".$don[1]."</affectation>
						<motif>".$don[2]."</motif>
						<dateDemande>".$don[3]."</dateDemande>
						<utilisateur>".$don[4]."</utilisateur>
					</item>
				</carte>"
_FIN_; 
			};
La tout me code se retrouve en text non interprété.
Je vais plus me pencher sur l'option du simpleXML.
Azaxx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 15h16   #6
Invité régulier
 
Inscription : janvier 2011
Messages : 27
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 27
Points : 6
Points : 6
étrange hmm, mon .=* n'étais pas une faute de frappe, mais bien le forum qui le rajoute lorsque je valide mon message ).
Va savoir pourquoi.

J'essaie la méthode simpleXml et je vous donne le résultat.


EDIT :
Alors voila mon code now
Code :
1
2
3
4
5
6
7
8
9
10
11
12
			$sxe = new SimpleXMLElement($xmlstr);
 
			foreach ($donnees as $don){
 
				$carte = $sxe->addChild('carte');
				$carte->addChild('myFere', $don[0]);
				$carte->addChild('affectation', $don[1]);
				$carte->addChild('motif', $don[2]);
				$carte->addChild('dateDemande', $don[3]);
				$carte->addChild('utilisateur', $don[4]);
			}
			echo $sxe->asXML();
et le beau message d'erreur qui va avec (sinon c'est pas marrant).
String could not be parsed as XML.

De plus une autre question. Au lieu de l'afficher dans un echo je préférais l'enregistrer quelques part mon fichier xml. Comme avec la méthode fil_put_contents. Est-ce possible?


re-redit: C'est parce que a mon object SimpleXml je dois lui passer un xml. Et vu que je n'en ai pas parce que justement je veux en créer un.
Comment je fais?
Azaxx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 16h19   #7
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 466
Points : 8 466
enfaite dans SimpleXML il attend deja un bout de XML même minimal, si tu veux enregistrer dans un fichier c'est avec asXML en lui rajoutant le paramètre.
http://www.php.net/manual/fr/simplexmlelement.asxml.php

Pour créer un XML en partant de rien utilise DOMDocument ou plus dur XMLWriter, SimpleXML c'est plus pour faire de la modification que de la creation
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 16h27   #8
Invité régulier
 
Inscription : janvier 2011
Messages : 27
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 27
Points : 6
Points : 6
J'ai réussis pour l'histoire du petit bout d'xml minimal.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function genererListeNoireXml($donnees){
 
			$sxe = new SimpleXMLElement('<?xml version="1.0" encoding="ISO-8859-1"?><cartes></cartes>');
 
			foreach ($donnees as $don){
 
				$carte = $sxe->addChild('carte');
				$carte->addChild('myFere', $don[0]);
				$carte->addChild('affectation', $don[1]);
				$carte->addChild('motif', $don[2]);
				$carte->addChild('dateDemande', $don[3]);
				$carte->addChild('utilisateur', $don[4]);
			}
	//		echo $sxe->asXML();break;
			file_put_contents("../publish/generated/listenoire.xml",$sxe->asXML());
		}
Voila avec ceci je peux générer mon fichier xml et l'enregistrer a l'endroit que je souhaite. Seul bémol quand j'ouvre mon xml tout est sur une ligne.
A-tu une idée pour pouvoir indenter mon xml lors de la création?
Azaxx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2011, 10h28   #9
Invité régulier
 
Inscription : janvier 2011
Messages : 27
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 27
Points : 6
Points : 6
Bon voila mon dernier poste pour ce sujet, j'ai réussis tout ce que je voulais faire.

Je poste ma solution au cas ou cela pourrait aider d'autres personnes.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
			$sxe = new SimpleXMLElement('<?xml version="1.0" encoding="ISO-8859-1"?><cartes></cartes>');
 
			foreach ($donnees as $don){
 
				$carte = $sxe->addChild('carte');
				$carte->addChild('myFere', $don[0]);
				$carte->addChild('affectation', $don[1]);
				$carte->addChild('motif', $don[2]);
				$carte->addChild('dateDemande', $don[3]);
				$carte->addChild('utilisateur', $don[4]);
			}
	//		echo $sxe->asXML();break;
 
			$inter = $sxe->asXML();
 
			$dom = new DomDocument;
			$dom->preserveWhiteSpace = FALSE;
			$dom->loadXML($inter);
			$dom->formatOutput = true;
 
 
			file_put_contents("../publish/generated/listenoire.xml",$dom->saveXML());
Voila merci a toi stealth pour m'avoir lancé sur la poste du SimpleXML.
Azaxx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2011, 10h35   #10
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 466
Points : 8 466
par contre la fin ne sert a rien :
Code :
1
2
3
4
5
6
7
8
$inter = $sxe->asXML();
 
$dom = new DomDocument;
$dom->preserveWhiteSpace = FALSE;
$dom->loadXML($inter);
$dom->formatOutput = true;
 
file_put_contents("../publish/generated/listenoire.xml",$dom->saveXML());
le fait déjà tout ca (cf : mon post plus haut)

Code :
1
2
$file = '../publish/generated/listenoire.xml';
$inter = $sxe->asXML($file);
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2011, 19h19   #11
Invité régulier
 
Inscription : janvier 2011
Messages : 27
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 27
Points : 6
Points : 6
Ah merci de la rectification.
Je changerais cela demain.

Merci encore.
Azaxx 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 10h33.


 
 
 
 
Partenaires

Hébergement Web