Page 1 sur 1

J'aimerais insérer un lien HTTP dans du code xml mais je ne

Posté : 26 juil. 2008, 09:10
par beegees
Bonjour tout le monde,

J'ai ce code :

Code : Tout sélectionner

<document docref="home"> − <info> <titre>Ma page</titre> <mots-cles>Des mots clés</mots-cles> <description>Page principale</description> </info> − <page filename="index"> − <layout> <titre1>Le titre de la page</titre1> </layout> − <layout> <column-right/> − <toc> <toc1 media="www" docref="ABC:toto:batiment" toc-space-after="8">Le site</toc1> </toc> </layout>
J'aimerais que ceci :

Code : Tout sélectionner

<toc1 media="www" docref="ABC:toto:batiment" toc-space-after="8">Le site</toc1>
[/CODE]

Soit remplacer par un lien http du genre http://www.laposte.fr

Comment puis-je faire ?

Merci d'avance.

beegees

Re: J'aimerais insérer un lien HTTP dans du code xml mais je

Posté : 27 juil. 2008, 01:54
par Victor BRITO
Si tu as la possibilité d'éditer le fichier XML, rédige l'élément en question comme suit :

Code : Tout sélectionner

<toc1 media="www" docref="ABC:toto:batiment" toc-space-after="8">http://www.laposte.fr</toc1>
Sinon, tu as la possibilité d'essayer la manipulation du DOM en PHP 5, en essayant ceci :
// Instanciation de la classe DOM
$dom = new DomDocument ();
// Chargement du fichier XML
$dom -> loadXML ('ton-fichier.xml');
// Création d'un nœud texte
$texte = $dom -> createTextNode ('http://www.laposte.fr');
// Création d'un élément auquel on ajoute le nœud texte comme enfant, ainsi que des attributs
$element = $dom -> createElement ('toc1');
$element -> setAttribute ('media', 'www');
$element -> setAttribute ('docref', 'ABC:toto:batiment');
$element -> setAttribute ('toc-space-after', '8');
$element -> appendChild ($texte);
// On remplace l'élément toc1 par celui créé (on passe par son élément parent, qui est toc)
$toc = $dom -> getElementsByTagName ('toc');
// $toc retournant un tableau, on se pointe sur le premier élément dudit tableau
$toc1 = $toc[0] -> firstChild;
$toc[0] -> replaceChild ($element, $toc1);
// On sauvegarde le tout
$dom -> save ('ton-fichier-modifie.xml');
En espérant ne pas m'être trompé et avoir été clair...

Re: J'aimerais insérer un lien HTTP dans du code xml mais je

Posté : 27 juil. 2008, 09:12
par beegees
Si tu as la possibilité d'éditer le fichier XML, rédige l'élément en question comme suit :

Code : Tout sélectionner

<toc1 media="www" docref="ABC:toto:batiment" toc-space-after="8">http://www.laposte.fr</toc1>
Sinon, tu as la possibilité d'essayer la manipulation du DOM en PHP 5, en essayant ceci :
// Instanciation de la classe DOM
$dom = new DomDocument ();
// Chargement du fichier XML
$dom -> loadXML ('ton-fichier.xml');
// Création d'un nœud texte
$texte = $dom -> createTextNode ('http://www.laposte.fr');
// Création d'un élément auquel on ajoute le nœud texte comme enfant, ainsi que des attributs
$element = $dom -> createElement ('toc1');
$element -> setAttribute ('media', 'www');
$element -> setAttribute ('docref', 'ABC:toto:batiment');
$element -> setAttribute ('toc-space-after', '8');
$element -> appendChild ($texte);
// On remplace l'élément toc1 par celui créé (on passe par son élément parent, qui est toc)
$toc = $dom -> getElementsByTagName ('toc');
// $toc retournant un tableau, on se pointe sur le premier élément dudit tableau
$toc1 = $toc[0] -> firstChild;
$toc[0] -> replaceChild ($element, $toc1);
// On sauvegarde le tout
$dom -> save ('ton-fichier-modifie.xml');
En espérant ne pas m'être trompé et avoir été clair...
Bonjour Victor,

Merci sincèrement pour ta réponse et pour le temps que tu y as consacré.

J'ai modifié ceci :

Code : Tout sélectionner

<toc1 media="www" docref="ABC:toto:batiment" toc-space-after="8">http://www.laposte.fr</toc1>
La seule chose qui a changé est le nom sur la page, le lien en lui même n'a pas changé, c'est surtout cela que je veux changer, est-ce possible ?

Merci encore pour ton aide.

Re: J'aimerais insérer un lien HTTP dans du code xml mais je

Posté : 27 juil. 2008, 19:31
par Victor BRITO
La seule chose qui a changé est le nom sur la page, le lien en lui même n'a pas changé, c'est surtout cela que je veux changer, est-ce possible ?
Peux-tu reformuler plus clairement ta demande ?

Re: J'aimerais insérer un lien HTTP dans du code xml mais je

Posté : 27 juil. 2008, 19:54
par beegees
La seule chose qui a changé est le nom sur la page, le lien en lui même n'a pas changé, c'est surtout cela que je veux changer, est-ce possible ?
Peux-tu reformuler plus clairement ta demande ?
Pour faire simple, j'aimerais ajouter :

Notre nouveau site, j'aimerais que Notre nouveau site pointe par exemple sur www.phpfrance.com

S'est tout ce que je veux mais je n'y arrive pas.

Voici la version XML utilisée :
<?xml version="1.0" encoding="ISO-8859-1"?>
Merci pour l'aide.

beegees[/code]

Posté : 27 juil. 2008, 20:02
par Victor BRITO
Ajoute un attribut (href, par exemple) à l'élément toc1, comme suit :

Code : Tout sélectionner

<?php <toc1 media="www" docref="ABC:toto:batiment" toc-space-after="8" href="http://www.laposte.fr">Le site</toc1>
Ensuite, pour l'affichage en HTML, avec SimpleXML, tu récupères le nœud texte et l'attribut href.
<?php
// Chargement du fichier XML
$xml = simplexml_load_file ('ton-fichier.xml');

// Récupération du nœud toc1 et de l'attribut href
$toc1 = $xml -> page[0] -> toc[0] -> toc1;
$href = $toc1['href'];
// Pour l'affichage, on force l'affichage sous forme de chaîne de caractères
?>
<a href="<?php echo ((string) $href) ?>"><?php echo htmlspecialchars ((string) $toc1) ?></a>