Dom xml et php4
12 messages • Page 1 sur 1
Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics
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.
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.
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.
Ce tutoriel pourra peu être t'aider à comprendre-> http://www.siteduzero.com/tuto-3-6950-1 ... #ss_part_4
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

- Messages: 1340
- Inscription: Ven Sep 29, 2006 12:50
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);
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.
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 accro

- Messages: 1340
- Inscription: Ven Sep 29, 2006 12:50
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.
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 accro

- Messages: 1340
- Inscription: Ven Sep 29, 2006 12:50
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
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 :
- Google rejoint le projet Open AJAX créé par IBM
- Google Enterprise a son blog
- Le blog de Google Analytics
- Le blog officiel de Google Research
- Un (RSS) pour tous (les blogs officiels de Google)
- Les meilleures extensions Firefox pour le référencement
- Le blog officiel de Google au Japon
- Le blog officiel de Google Custom Search (CSE)
- Le blog officiel de Google AdWords en français - Inside AdWords FR
- Annuaire WRI : intégration des flux XML des inscrits
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




le forum