PHP DOM & XML

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : PHP DOM & XML

Re: PHP DOM & XML

par didav » 02 nov. 2010, 11:39

Merci pour vos aides.
J'ai écouté vos conseils. J'ai finalement utilisé Simple XML pour parvenir à mes fins.
Sujet clos.
A bientot

Re: PHP DOM & XML

par stealth35 » 30 oct. 2010, 18:32

un xpath serait plus simple :wink:
$sx->xpath("//news[@id=\"a$id\"]");

Re: PHP DOM & XML

par Cyrano » 29 oct. 2010, 19:34

Je vois, on va t'aiguiller un peu alors : utilise simple_xml.

C'est fait à l'arrache, mais le résultat est là. Je n'ai pas fait de fioritures, à toi d'arranger les détails :
<?php
$langue  = (isset ($_GET['langue'])) ? $_GET['langue'] : 'fr';
$id      = (isset ($_GET['id']))     ? $_GET['id']     : 1;
$fichier = ($langue == 'fr')         ? 'news_fr.xml'   : 'news_uk.xml';

$sx = simplexml_load_file($fichier);

$sId = 'a'. $id;
foreach($sx as $n => $news)
{
    if($news['id'] == $sId)
    {
        $news_node = $sx->news;
    }
}

$news_date = (string) $news_node->news_date;
echo '<h1>' . $news_date . '</h1>';
?>

Re: PHP DOM & XML

par didav » 29 oct. 2010, 18:47

Modif réalisé : + en .
Rien n'a changé.

J'ai essayé ca aussi :
$news_node = $dom->getElementById('a'.$id)->tagName;
echo '<h1>'.$news_node.'</h1>';
Toujour la même erreur sur l'echo : Notice: Trying to get property of non-object

Une après-midi de flinguer sur ce petit bug. J'ai cherché et testé pas mal de truc.
J'aimerai tellement faire fonctionner l'attribut "id" de news et passer par cette fonction getElementById.

Si pas de réponse dans le weekend, je ferai un noeud <news_id>.
J'invoque les dieux du débugage, ceux du PHP et toutes les divinités XML !!!

Re: PHP DOM & XML

par Cyrano » 29 oct. 2010, 18:41

Peut-être qu'en faisant des concaténations avec un « . » comme en PHP au lieu d'un « + » comme en JavaScript ça fonctionnerait mieux ?
En faisant :
$news_node = $dom->getElementById ('a'. $id);
Et non
$news_node = $dom->getElementById ('a'+ $id);
:-*

Re: PHP DOM & XML

par devlop78 » 29 oct. 2010, 18:38

Moi aussi il m'a rendu fou. J'ai laissé tomber ^^

PHP DOM & XML

par didav » 29 oct. 2010, 18:28

Salut à tous,
Je rencontre pas mal de problème pour lire un XML avec par PHP DOM. L'utilisation de getElementById me rend fou.
Voici la composition de mon XML (news_fr.xml) :

Code : Tout sélectionner

<?xml version="1.0" encoding="utf-8"?> <niouz> <news id="a1"> <news_date>01-01-2010</news_date> <news_langue>fr</news_langue> <news_categorie>Qualit&eacute;</news_categorie> <news_titre>test 1</news_titre> <news_texte>tetvcrfds</news_texte> <news_image>images/actus/</news_image> </news> <news id="a2"> <news_date>01-01-2010</news_date> <news_langue>fr</news_langue> <news_categorie>Qualit&eacute;</news_categorie> <news_titre>test 2</news_titre> <news_texte>regrgre</news_texte> <news_image>images/actus/</news_image> </news> </niouz>
Voici la composition de mon PHP pour la lecture de mes noeuds <news>:
                <?php

		if(isset($_GET['langue'])) $langue = $_GET['langue'];
		else $langue = '';
		if(isset($_GET['id'])) $id = $_GET['id'];
		else $id = '';

					if($langue == 'fr') {$fichier = 'news_fr.xml';}
					else {$fichier = 'news_uk.xml';}
					
					$dom = new DOMDocument('1.0', 'utf-8');
					$dom->validateOnParse = true;
					$dom->load($fichier);
					
					$news_node = $dom->getElementById('a'+$id);					
					$news_date = $news_node->nodeValue;

					echo '<h1>'.$news_date.'</h1>';
					
				?>
J'ai l'erreur suivante : Notice: Trying to get property of non-object in "ligne echo"
Comment récupérer les différents noeuds qui compose <news> par un id.
Merci d'avance pour votre aide.