j'ai commencé mais pas encore bien loin j'ai plein de choses a effectué j'en suis a la fin de l'introduction.
j'ai commencé mais pas encore bien loin j'ai plein de choses a effectué j'en suis a la fin de l'introduction.
Je tente de contribuer à ce truc. Comme je ne connais pas la gestion du xml en PHP (déjà faite en js, mais ce n'était pas de la POO), je tente déjà de faire tourner l'exemple extra-simple de Benjamin Delespierre.
En 2e ligne du code, il y a $doc->loadXML($xml); Or cela exige le PHP 5. Comme je n'ai pas encore ça chez mes hébergeurs, j'ai tenté de l'activer sur un compte Free avec un .htaccess contenant "php 1", mais ça se termine par un warning :Quelqu'un pourrait-il m'aider ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part Warning: DOMDocument::loadXML() [function.DOMDocument-loadXML]: Start tag expected, '<' not found in Entity, line: 1 in /mnt/163/sda/2/6/laurentschmitt18/xml/xml.php on line 8
Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell
Si la discussion est résolue, merci de cliquer sur le bouton
Free n'est pas un hébergeur digne de ce nom. Si toutefois tu veux passer en PHP 5, il faut le spécifier dans le .htaccess:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 php 1 SetEnv PHP_VER 5 ##Passage register globals off SetEnv REGISTER_GLOBALS 0 ## identifiant de session placé dans le cookie SetEnv SESSION_USE_TRANS_SID 0
On vous a menti
PHP, Injection de dépendances et composants
La POO en PHP en 10 minutes pour moins
Suivez-moi sur GitHub et Twitter
N'oubliez pas de vous servir des bouttons , et
Même en ayant copié ton code dans mon .htaccess, le warning est le même et de plus, phpinfo me dit encore que je suis en 4.4.3 et sinon, qu'est-ce qu'il a Free, dont une qualité est d'être gratuit ?
Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell
Si la discussion est résolue, merci de cliquer sur le bouton
@Laurent : Ton fichier XML ne commence pas par "<?xml..." ? Si c'est le cas, est-il en UTF-8 ? Et si c'est le cas, as-tu bienen 1ere ligne ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part <?xml version="1.0" encoding="UTF-8"?>
J'ai eu ce type d'erreur avec un fichier encodé en UTF-8 et le BOM me sortait cette erreur (et le XML commençait par <?xml version="1.0" encoding="UTF-16"?> , il n'était pas de moi...)
@Guillaume : Pourrais-tu nous dire où tu en es actuellement ? Je ne pense pas que les gens, ici, feront ton "devoir" à ta place, mais ils t'aiguilleront (comme le fait très bien Benjamin). Le but du BTS, c'est que tu apprennes
Je suis fervent utilisateur de PHP et de jQuery.
Après des études de graphisme, j'ai décidé de mélanger développement web et web design. J'ai ainsi donc créé mon site web de développeur web dans le Val d'Oise mais aussi plusieurs projets personnels.
Dans les plus aboutis, vous pourrez trouver dans mon labo et dans mon devblog, une extension de navigateur pour envoyer l'URL de la page actuelle vers votre email pour lire plus tard ou sauvegarder, mon générateur de template HTML5, etc…
Oui aux 2 questions. fichier xmlTon fichier XML ne commence pas par "<?xml..." ? Si c'est le cas, est-il en UTF-8 ?
(UTF8 sans BOM)
Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell
Si la discussion est résolue, merci de cliquer sur le bouton
@Laurent : effectivement mais quand je le télécharge, il y a 2 lignes vides avant <?xml version="1.0" encoding="utf-8" ?> (ou plutôt 2 sauts de ligne, donc pas réellement du vide )
D'ailleurs, firefox me donne une erreur quand j'essaye de l'afficher.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7<?xml version="1.0" encoding="utf-8" ?> <Ville> ... </Ville>
Je suis fervent utilisateur de PHP et de jQuery.
Après des études de graphisme, j'ai décidé de mélanger développement web et web design. J'ai ainsi donc créé mon site web de développeur web dans le Val d'Oise mais aussi plusieurs projets personnels.
Dans les plus aboutis, vous pourrez trouver dans mon labo et dans mon devblog, une extension de navigateur pour envoyer l'URL de la page actuelle vers votre email pour lire plus tard ou sauvegarder, mon générateur de template HTML5, etc…
Tu as raison, pour les sauts de ligne. Mais tout ça est chez Free, et je ne peux m'y connecter depuis le boulot : j'essaierai donc ce soir...
Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell
Si la discussion est résolue, merci de cliquer sur le bouton
Benjamin Delespierre je viens d’essayer la fonction modifier que tu m'a fournie pendant 2h mais impossible a faire fonctionné, et ci je ne mais pasen commentaire j'ai une erreur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part //header('Content-Type: text/xml');
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 // Ouvrir un document XML $doc = new DOMDocument; $doc->loadXML($xml); // On va par exemple modifier l'url de la ville de PARIS $xpath = new DOMXPath($doc); $node_list = $xpath->query('//Info[@name="Paris:"]'); foreach ($node_list as $node) { $node->setAttribute('url', 'http://google.fr'); } // On envoie les headers pour le navigateur header('Content-Type: text/xml'); // On affiche le document echo $doc->saveXML();
Et c'est quoi l'erreur ?
Je suis fervent utilisateur de PHP et de jQuery.
Après des études de graphisme, j'ai décidé de mélanger développement web et web design. J'ai ainsi donc créé mon site web de développeur web dans le Val d'Oise mais aussi plusieurs projets personnels.
Dans les plus aboutis, vous pourrez trouver dans mon labo et dans mon devblog, une extension de navigateur pour envoyer l'URL de la page actuelle vers votre email pour lire plus tard ou sauvegarder, mon générateur de template HTML5, etc…
Erreur d'analyse XML : aucun élément trouvé
Emplacement : http://serveurlinux......./test.php
Numéro de ligne 2, Colonne 1 :
Il me dit qu'il ne trouve pas de fichier XML alors qu'il ce trouvent dans le même dossier, et quand je mais en commentaire cet ligne, il ne me l'affiche plus ce qui est normale, mais le fichier n'ai en aucun cas modifier.
(voir DOMDocument::loadXML) attends que $xml soit une chaine de caractères qui représente un flux XML et non le path d'un fichier. Pour charger un fichier directement, il suffit d'utiliser DOMDocument::load.
Code : Sélectionner tout - Visualiser dans une fenêtre à part $doc->loadXML($xml);
Dans mon exemple, j'avais mis le contenu du fichier dans une chaine de caractères pour simplifier...
On vous a menti
PHP, Injection de dépendances et composants
La POO en PHP en 10 minutes pour moins
Suivez-moi sur GitHub et Twitter
N'oubliez pas de vous servir des bouttons , et
J'ai fait ceci, avec j'arrive a savoir combien j'ai de ville dans mon fichier XML, mais j'arrive pas a récupéré le nom des villes et donc pas a les mettre dans une liste pour que l'utilisateur puisse la sélectionné.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
29
30
31
32
33 <?php $fichier_xml = "./miniprojet.xml"; try { if (!file_exists($fichier_xml)) { die("Le fichier " . $fichier_xml . " n'existe pas."); } $doc = new DOMDocument("1.0", "utf-8"); if ($doc->load($fichier_xml) == FALSE) { die("Impossible de charger le fichier XML ($fichier_xml)"); } $liste = $doc->getElementsByTagName("Info"); echo "Il y a " . $liste->length . " Ville dans ce fichier XML<br />"; foreach($liste as $ville) { if ($ville->hasAttributes()) { echo "liste des attributs de Ville : <br/>"; for ($i=0;$i<$ville->attributes->length;$i++) echo $noeud->attributes->item($i)->nodeValue . "<br/>"; } echo "Nom des Villes :<br/>"; for ($i=0;$i<$ville->childNodes->length;$i++) echo $ville->childNodes->item($i)->nodeValue . "<br/>"; } } catch (DOMException $e) { die($e->getMessage()); } ?>
Pourtant tu y es presque.
Tu peux faire une liste simplement en itérant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 try { $doc = new DOMDocument; $doc->loadXML($xml); // remplacer par $doc->load $info_list = $doc->getElementsByTagName('Info'); echo "<h3>Il y a {$info_list->length} villes répertoriées</h3>"; echo '<ul id="villes">'; foreach ($info_list as $node) { if ($node->hasAttribute('name')) echo '<li>' . str_replace(array('.', ':'), '', $node->getAttribute('name')) . '</li>'; } echo '</ul>'; } catch (Exception $e) { die($e->getMessage()); }
On vous a menti
PHP, Injection de dépendances et composants
La POO en PHP en 10 minutes pour moins
Suivez-moi sur GitHub et Twitter
N'oubliez pas de vous servir des bouttons , et
Je viens d’essayer votre code, il me trouve 0 ville répertorié alors qu'il y en a 17, et donc aucune liste.
J'ai utilisé ces données pour tester, ça fonctionnait parfaitement:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
29
30
31
32$xml = <<< XML <?xml version="1.0" encoding="utf-8" ?> <Ville> <Infos> <Info name="Aix en Provence:" url="http://www.vhello.fr/" lat="43.5262730679307" lng="5.445442199707031"/> <Info name="Amiens:" url="http://www.velam.amiens.fr/" lat="49.900" lng="2.300"/> <Info name="Besançon:" url="http://www.velocite.besancon.fr/" lat="45.567" lng="47.250"/> <Info name="Cergy Pontoise:" url="http://www.velo2.cergypontoise.fr/" lat="49.0368" lng="2.0803"/> <Info name="Marseille:" url="http://www.levelo-mpm.fr/" lat="43.300" lng="5.367"/> <Info name="Mulhouse:" url="http://www.velocite.mulhouse.fr/" lat="47.750" lng="7.350"/> <Info name="Nancy:" url="http://www.velostanlib.fr/" lat="48.700" lng="6.200"/> <Info name="Nantes:" url="http://www.bicloo.nantesmetropole.fr/" lat="47.233" lng="-1.583"/> <Info name="Paris:" url="http://www.velib.paris.fr/" lat="48.833" lng="2.333"/> <Info name="Plaine commune:" url="http://www.velcom.fr/" lat="47.216667" lng="5.133333"/> <Info name="Rouen:" url="http://cyclic.rouen.fr/" lat="49.433" lng="1.083"/> <Info name="Toulouse:" url="http://www.velo.toulouse.fr/" lat="43.617" lng="1.450"/> <Info name="Bruxelles:" url="http://www.villo.be/" lat="50.8333" lng="4.33333"/> <Info name="Dublin:" url="http://www.dublinbikes.ie/" lat="53.333" lng="-6.250"/> <Info name="Luxembourg:" url="http://www.veloh.lu/" lat="49.617" lng="6.133"/> <Info name="Santander:" url="http://www.tusbic.es/" lat="43.467" lng="-3.800"/> <Info name="Séville:" url="http://www.sevici.es/" lat="37.387" lng="-5.991"/> </Infos> <!--Partie d'adresse internet a ajouter a la fin de ladresse internet d'une ville pour avoir accèes au différente station puis au détails des stations--> <complementsURL> <complementURL name="carto" ajout="service/carto"/> <complementURL name="stationdetails" ajout="service/stationdetails/"/> </complementsURL> </Ville> XML;
On vous a menti
PHP, Injection de dépendances et composants
La POO en PHP en 10 minutes pour moins
Suivez-moi sur GitHub et Twitter
N'oubliez pas de vous servir des bouttons , et
j'ai fait un copier coller du XML et du code PHP et sous wamp j’obtiens
( ! ) Notice: Undefined variable: xml in C:\wamp\www\test\test.php on line 4
Call Stack
# Time Memory Function Location
1 0.0004 681568 {main}( ) ..\test.php:0Il y a 0 villes répertoriées( ! ) Warning: DOMDocument::loadXML() [domdocument.loadxml]: Empty string supplied as input in C:\wamp\www\test\test.php on line 4
Call Stack
# Time Memory Function Location
1 0.0004 681568 {main}( ) ..\test.php:0
2 0.0005 682616 DOMDocument->loadXML( ) ..\test.php:4
Difficile à croire à moins que tu n'aies mal copié collé.
Le code suivant:
Produit:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48$xml = <<< XML <?xml version="1.0" encoding="utf-8" ?> <Ville> <Infos> <Info name="Aix en Provence:" url="http://www.vhello.fr/" lat="43.5262730679307" lng="5.445442199707031"/> <Info name="Amiens:" url="http://www.velam.amiens.fr/" lat="49.900" lng="2.300"/> <Info name="Besançon:" url="http://www.velocite.besancon.fr/" lat="45.567" lng="47.250"/> <Info name="Cergy Pontoise:" url="http://www.velo2.cergypontoise.fr/" lat="49.0368" lng="2.0803"/> <Info name="Marseille:" url="http://www.levelo-mpm.fr/" lat="43.300" lng="5.367"/> <Info name="Mulhouse:" url="http://www.velocite.mulhouse.fr/" lat="47.750" lng="7.350"/> <Info name="Nancy:" url="http://www.velostanlib.fr/" lat="48.700" lng="6.200"/> <Info name="Nantes:" url="http://www.bicloo.nantesmetropole.fr/" lat="47.233" lng="-1.583"/> <Info name="Paris:" url="http://www.velib.paris.fr/" lat="48.833" lng="2.333"/> <Info name="Plaine commune:" url="http://www.velcom.fr/" lat="47.216667" lng="5.133333"/> <Info name="Rouen:" url="http://cyclic.rouen.fr/" lat="49.433" lng="1.083"/> <Info name="Toulouse:" url="http://www.velo.toulouse.fr/" lat="43.617" lng="1.450"/> <Info name="Bruxelles:" url="http://www.villo.be/" lat="50.8333" lng="4.33333"/> <Info name="Dublin:" url="http://www.dublinbikes.ie/" lat="53.333" lng="-6.250"/> <Info name="Luxembourg:" url="http://www.veloh.lu/" lat="49.617" lng="6.133"/> <Info name="Santander:" url="http://www.tusbic.es/" lat="43.467" lng="-3.800"/> <Info name="Séville:" url="http://www.sevici.es/" lat="37.387" lng="-5.991"/> </Infos> <!--Partie d'adresse internet a ajouter a la fin de ladresse internet d'une ville pour avoir accèes au différente station puis au détails des stations--> <complementsURL> <complementURL name="carto" ajout="service/carto"/> <complementURL name="stationdetails" ajout="service/stationdetails/"/> </complementsURL> </Ville> XML; try { $doc = new DOMDocument; $doc->loadXML($xml); // remplacer par $doc->load $info_list = $doc->getElementsByTagName('Info'); echo "<h3>Il y a {$info_list->length} villes répertoriées</h3>"; echo '<ul id="villes">'; foreach ($info_list as $node) { if ($node->hasAttribute('name')) echo '<li>' . str_replace(array('.', ':'), '', $node->getAttribute('name')) . '</li>'; } echo '</ul>'; } catch (Exception $e) { die($e->getMessage()); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 <h3>Il y a 17 villes répertoriées</h3><ul id="villes"><li>Aix en Provence</li><li>Amiens</li><li>Besançon</li><li>Cergy Pontoise</li><li>Marseille</li><li>Mulhouse</li><li>Nancy</li><li>Nantes</li><li>Paris</li><li>Plaine commune</li><li>Rouen</li><li>Toulouse</li><li>Bruxelles</li><li>Dublin</li><li>Luxembourg</li><li>Santander</li><li>Séville</li></ul>
On vous a menti
PHP, Injection de dépendances et composants
La POO en PHP en 10 minutes pour moins
Suivez-moi sur GitHub et Twitter
N'oubliez pas de vous servir des bouttons , et
Le code ne fonctionnaire t'il pas que en php5 ?
je n'ai rien dit car ma version php sur wamp est: Version de PHP: 5.3.4
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager