Dom xml et php4

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics

onlylove
WRInaute discret
WRInaute discret
 
Messages: 72
Inscription: Sam Mar 18, 2006 18:49

Dom xml et php4

Message le Jeu Fév 28, 2008 15:25

Bonjour, après encore moulte recherche, je n'arrive pas à insérer dans un fichier a.xml d'autres items :
voici mon fichier a.xml :
Code: Tout sélectionner
<?xml version="1.0"?>
<rss version="2.0">
<user id="22">
<titre>valeur titre 1</titre>
<livre>valeur livre numero 1 </livre>
</user>
</rss>


et le fichier a.php (je suis en version php 4)
Code: Tout sélectionner
<?php
$dom_xml = xmldocfile("a.xml");
?>


Quelqu'un sait comment ajouter à cette liste d'item

<titre>valeur titre 1</titre>
<livre>valeur livre numero 1</livre>

un nouvel ensemble
<titre>valeur titre 2</titre>
<livre>valeur livre numero 2 </livre>

pour obtenir ainsi un fichier xml comme ceci :

Code: Tout sélectionner
<?xml version="1.0"?>
<rss version="2.0">
<user id="22">
<titre>valeur titre 2</titre>
<livre>valeur livre numero 2 </livre>
<titre>valeur titre 1</titre>
<livre>valeur livre numero 1 </livre>
</user>
</rss>

Merci.


lupuz
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 207
Inscription: Mer Mar 15, 2006 23:41

Message le Jeu Fév 28, 2008 15:57

Pour manipuler un fichier XML avec PHP, je te conseil de regarder du coté de SimpleXML ( -http://fr.php.net/manual/fr/ref.simplexml.php )

Ps: ton fichier ne semble pas être un format RSS les lignes :
<rss version="2.0"> et </rss> ne sont pas utiles.

onlylove
WRInaute discret
WRInaute discret
 
Messages: 72
Inscription: Sam Mar 18, 2006 18:49

Message le Jeu Fév 28, 2008 16:14

lupuz a écrit:Pour manipuler un fichier XML avec PHP, je te conseil de regarder du coté de SimpleXML ( -http://fr.php.net/manual/fr/ref.simplexml.php )

Ps: ton fichier ne semble pas être un format RSS les lignes :
<rss version="2.0"> et </rss> ne sont pas utiles.

Merci pour l'element rss a retirer, je débute dans le xml.
La fonction simplexml requiert php 5 et moi j'ai php 4 donc ne fonctionne pas.

Nenes
Nouveau WRInaute
 
Messages: 20
Inscription: Mer Avr 05, 2006 17:32

Message le Jeu Fév 28, 2008 17:01

Ce tutoriel pourra peu être t'aider à comprendre-> http://www.siteduzero.com/tuto-3-6950-1 ... #ss_part_4

onlylove
WRInaute discret
WRInaute discret
 
Messages: 72
Inscription: Sam Mar 18, 2006 18:49

Message le Jeu Fév 28, 2008 17:29

Nenes a écrit:Ce tutoriel pourra peu être t'aider à comprendre-> http://www.siteduzero.com/tuto-3-6950-1 ... #ss_part_4

merci j'ai testé mais j'ai des erreurs que je ne sais pas modifier.

N'existe-t-il pas une fonction qui ajoute un noeud à un endroit précis par pointage d'un item ?
En se servant de la variable dom ?
Quelque chose comme :

$temp = $dom->create_element("item");
$temp_new = $temp->appendChild($temp);

j'ai un retour Fatal error: Call to a member function on a non-object ... tout le temps...


Jeviensderio
WRInaute accro
WRInaute accro
 
Messages: 1340
Inscription: Ven Sep 29, 2006 12:50

Message le Jeu Fév 28, 2008 18:55

La balise RSS est utile car il faut un conteneur.
Si la variable $temp est l'élément que l'on crée, il ne faut pas associer appendChild à $temp mais au node RSS.

Code: Tout sélectionner
$rss->appendChild($temp);

Nenes
Nouveau WRInaute
 
Messages: 20
Inscription: Mer Avr 05, 2006 17:32

Message le Ven Fév 29, 2008 11:17

Sinon la doc de php est pas mal pour comprendre l'ajout de nœud -> http://www.php.net/manual/fr/function.d ... -child.php

l'exemple 3 correspond un peu près à ce que tu recherches.

onlylove
WRInaute discret
WRInaute discret
 
Messages: 72
Inscription: Sam Mar 18, 2006 18:49

Message le Ven Fév 29, 2008 15:08

Merci à tous ,
J'ai esssayé
Jeviensderio a écrit:La balise RSS est utile car il faut un conteneur.
Si la variable $temp est l'élément que l'on crée, il ne faut pas associer appendChild à $temp mais au node RSS.
Code: Tout sélectionner
$rss->appendChild($temp);


en fonction de a.xml :
Code: Tout sélectionner
<?xml version="1.0"?>
<rss version="2.0">
<user id="22">
//ajout ici si possible
<titre>valeur titre 1</titre>
<livre>valeur livre numero 1 </livre>
</user>
</rss>

Je fais dans a.php
Code: Tout sélectionner
$dom= xmldocfile("a.xml");
$temp = $dom->create_element("item");
$temp_new =$rss->append_child($temp);


renvoie Fatal error: Call to a member function on a non-object in ...
$rss n'est pas instancié, car je ne sais pas comment le faire.

Je voulais juste créé un nouvel élement dans mon fichier a.xml mais rien en fonctionne, c'est bizar.

Sinon merci Nenes j'ai regardé la doc que j'avais un peu déjà regardé

J'arrive juste l'exemple 3 : où je peux modifier un élément de l'item.
Mais impossible d'ajouter un nouvel item au fichier.

Je m'accroche à la doc mais c'est pas facile car il y a plus d'exemple php 5 et moi il me faut php4
Et des exemples php4 quand je teste bug !!


Jeviensderio
WRInaute accro
WRInaute accro
 
Messages: 1340
Inscription: Ven Sep 29, 2006 12:50

Message le Ven Fév 29, 2008 16:19

Il faudrait avoir le code complet, parceque:
- xmldocfile est une ancienne fonction, mais supposons qu'elle soit toujours supportée
- $rss n'est pas déclarée.

Avec cette librairie, on doit définir un objet DomNode $rss;

DomDocument $doc = domxml_open_file ("fichier xml")
DomNode $rss = $doc->get_element_by_id("rss");

Je vois aussi cela dans la doc:

4.3.0 Vous n'êtes plus autorisé d'insérer un noeud à partir d'un autre document.

Bref vérifier que la librairie DomDocument est disponible et tester les fonctions fournies dans le manuel.

onlylove
WRInaute discret
WRInaute discret
 
Messages: 72
Inscription: Sam Mar 18, 2006 18:49

Message le Ven Fév 29, 2008 16:49

Alors je suis en PHP Version 4.4.8
Et dom xml est déclaré comme ceci :

DOM/XML enabled
HTML Support enabled
XPath Support enabled
XPointer Support enabled
DOM/XSLT enabled
DOM/EXSLT enabled



En gros pour le code tout est là :
Je cherche à créer une fonction simple qui injecte dans mon fichier xml un nouvel ensemble

1- a.xml fichier xml simple
Code: Tout sélectionner
<?xml version="1.0"?>
<rss version="2.0">
<user id="22">
//ajout ici si possible
<titre>valeur titre 1</titre>
<livre>valeur livre numero 1 </livre>
</user>
</rss>


2- a.php
<?php
//obtenir contenu
$mon_dom= xmldocfile("a.xml");
function create_noeud_simple($dom,$endroit)
{
//.....

}
create_noeud($mon_dom,$ouca);
?>

Et donc creer au moins item comme ceci :
Code: Tout sélectionner
<?xml version="1.0"?>
<rss version="2.0">
<user id="22">
<blabla>contenu....</blabla>
<titre>valeur titre 1</titre>
<livre>valeur livre numero 1 </livre>
</user>
</rss>


Après il faut peut-être mettre mon fichier en chmod 777 ou quelque chose comme ça ?
ou sauver son contenu.
En gros je cherche le mécanisme de base pour inserer juste une ligne et refermer mon fichier.


Jeviensderio
WRInaute accro
WRInaute accro
 
Messages: 1340
Inscription: Ven Sep 29, 2006 12:50

Message le Sam Mar 01, 2008 12:23

Il y a un exemple complet dans la doc que j'ai modifié:

Code: Tout sélectionner
<?php
$doc = domxml_new_doc("1.0");
$root = $doc->create_element("rss");
$root = $doc->append_child($root);
$head = $doc->create_element("titre");
$head = $root->append_child($head);
$title = $doc->create_element("titre");
$title = $root->append_child($title);
$text = $doc->create_text_node("This is the title");
$text = $title->append_child($text);
$doc->dump_file("/tmp/test.xml", false, true);
?>


J'ai remplacé HTML par "rss".
Il reste à ajouter l'attribut avec create_attribute pour le créer et set_attribute pour l'ajouter.


Pas besoin de changer les permissions normalement.

onlylove
WRInaute discret
WRInaute discret
 
Messages: 72
Inscription: Sam Mar 18, 2006 18:49

Message le Sam Mar 01, 2008 19:17

Grand merci ça marche !!!!


Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités