Dom xml et php4
12 messages
• Page 1 sur 1
- onlylove
- WRInaute discret

- Messages: 72
- Inscription: 18 Mar 2006
Dom xml et php4
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 :
et le fichier a.php (je suis en version php 4)
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 :
Merci.
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 discret

- Messages: 212
- Inscription: 15 Mar 2006
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.
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

- Messages: 72
- Inscription: 18 Mar 2006
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: 5 Avr 2006
Ce tutoriel pourra peu être t'aider à comprendre-> http://www.siteduzero.com/tuto-3-6950-1 ... #ss_part_4
- onlylove
- WRInaute discret

- Messages: 72
- Inscription: 18 Mar 2006
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 passionné

- Messages: 1340
- Inscription: 29 Sep 2006
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.
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: 5 Avr 2006
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.
l'exemple 3 correspond un peu près à ce que tu recherches.
- onlylove
- WRInaute discret

- Messages: 72
- Inscription: 18 Mar 2006
Merci à tous ,
J'ai esssayé
en fonction de a.xml :
Je fais dans a.php
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 !!
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 passionné

- Messages: 1340
- Inscription: 29 Sep 2006
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.
- 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

- Messages: 72
- Inscription: 18 Mar 2006
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
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 :
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.
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 passionné

- Messages: 1340
- Inscription: 29 Sep 2006
Il y a un exemple complet dans la doc que j'ai modifié:
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.
- 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.
12 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
- Simple XML sous PHP4 ?
- XML DOM et PHP
- Aide pour supprimer un noeud XML, PHP 5, DOM [RESOLU]
- WordPress Mu passage dom repertoire vers dom sous domaine
- URL Rewriting : sous-dom virtuels, Multi-dom OVH/DNS Gandi
- Redirection sousdom.dom/rep/ vers dom/rep/
- php4 et cakephp
- session ne fonctionne plus de php4 à php5
- Migration vers PHP4 à PHP5
- migration PHP4 ==> PHP5 et MYSQL 5
Consultez la description détaillée des produits ou services de Google suivants : API Google Checkout
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités
