Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Probleme de recuperation de d'attribut d'un fichier XML

10 réponses
Avatar
Thief13
Rebonjour...

Bon, voilà, maintenant que j'ai inclu mon fichier XML qui, ressemble à ça :

> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
>
> <configuration>
>
> <environnement>
> <variable name="nomsite" content="Site de test" />
> <variable name="fuseau" content="Europe/Paris" />
> <variable name="langue" content="fr_FR" />
> <variable name="domaine" content="127.0.0.1" />
> </environnement>
>
> <configuration>

J'ai des problemes pour récuperer les valeurs (c'est la première fois
que je parse du XML)

j'ai essayé de récuperer les valeurs ainsi :

> $config_racine = simplexml_load_file($temp.'configuration.xml');
>
> $config_environnement = $config_racine->environnement;

Bon, en fait, là ça peut parraitre bizzard, mais il y a des noeud autre
que environnement

> // @annotation: Recuperation des variables d'environnements :
> $temp = $config_environnement->xpath('//variable[@name="nomsite"]');
> /**
> * Domaine du site
> *
> */
> define('CONF_SITE', $temp[0]['content']);

Le probleme, quand je fait comme ça, c'est que $temp[0]['content'] est
un objet simpleXML, et que ça marche pas dans la constante, alor le seul
moyen que j'ai trouvé, c'est ça :

> // @annotation: Recuperation des variables d'environnements :
> $temp = $config_environnement->xpath('//variable[@name="nomsite"]');
> /**
> * Domaine du site
> *
> */
> $temp2 = $temp[0]['content']->asXml();
> $temp2 = str_ireplace('', '', $temp2);
> $temp2 = str_ireplace('"', '', $temp2);
> $temp2 = str_ireplace('content=', '', $temp2);
> define('CONF_SITE', $temp2);

Malheureusement celà ne me semble pas tres performent... Pourtant,
asXml() est la seul méthode que j'ai trouvé pour révupérer une string,
mais il m'affiche mon contenu comme ça

> content="Site de test"

ç'est pour ça que je suis obligé de faire des str_ireplace() pour virer
le rab...

Y aurait-il y moyen plus performant ?

10 réponses

Avatar
Thierry
re

dsl limite HC là

$config_racine = simplexml_load_file($temp.'configuration.xml');

$config_environnement = $config_racine->environnement;

// @annotation: Recuperation des variables d'environnements :
$temp = $config_environnement->xpath('//variable[@name="nomsite"]');



$temp $config_racine->xpath('/environnement/variable[@name="nomsite"]/@content');

devrait te satisfaire (non testé sous simpleXML mais sablotron)


Avatar
Thierry
salut


<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<configuration>

<environnement>
<variable name="nomsite" content="Site de test" />
<variable name="fuseau" content="Europe/Paris" />
<variable name="langue" content="fr_FR" />
<variable name="domaine" content="127.0.0.1" />
</environnement>

<configuration>




tu te simplifierais quand meme bien la vie avec un fichier du genre:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<configuration>
<environnement>
<nomsite>Site de test</nomsite>
<fuseau>Europe/Paris</fuseau>
<langue>fr_FR</langue>
<domaine>127.0.0.1</domaine>
</environnement>
<configuration>

et la
$nomsite = $config->environnement->nomsite;
ou à la rigeur
$nomsite = $config->environnement[0]->nomsite;


Avatar
Thief13
$nomsite = $config->environnement->nomsite;
ou à la rigeur
$nomsite = $config->environnement[0]->nomsite;


Quel est la différence ?

Avatar
Thief13
re

dsl limite HC là



Désolé, mais c'est quoi HC ?

Avatar
Thierry

Désolé, mais c'est quoi HC ?


Hors Charte

On parle plus d'un pb xPath que d'un pb PHP/simpleXML

Avatar
Thierry
"Thief13" a écrit dans le message de
news:45dcc50d$0$14947$
$nomsite = $config->environnement->nomsite;
ou à la rigeur
$nomsite = $config->environnement[0]->nomsite;


Quel est la différence ?


avec la deuxième syntaxe tu peux gérer plusieus noeuds <environnement>


Avatar
Thief13
"Thief13" a écrit dans le message de
news:45dcc50d$0$14947$
$nomsite = $config->environnement->nomsite;
ou à la rigeur
$nomsite = $config->environnement[0]->nomsite;
Quel est la différence ?



avec la deuxième syntaxe tu peux gérer plusieus noeuds <environnement>


Ha, donc, si comme je l'ai prévus dans mon fichier XML, il n'y a qu'un
seul noeud <environnement>, j'utilise $nomsite $config->environnement->nomsite; si je comprend bien



Avatar
Thief13
Désolé, mais c'est quoi HC ?


Hors Charte

On parle plus d'un pb xPath que d'un pb PHP/simpleXML
Ok, désolé dans ce cas... Mais c'était la manière dont la valeur était

retourné dans php, si il y a un autre moyen que xPath pour récupérer la
valeur que je veux en string, ça ma va, justemet, ce qui compte c pas le
xPath, mais comment récupérer cette valeur comme je veux avec php


Avatar
Thief13
$nomsite = $config->environnement->nomsite;
ou à la rigeur
$nomsite = $config->environnement[0]->nomsite;


en fait, ça ne regle toujours pas mon problème, car le résultat est le
meme : ça ne retourne pas une string, mais un objet :
object(SimpleXMLElement)#7 (1) { [0]=> string(12) "Site de test" }

Avatar
Thief13
$nomsite = $config->environnement->nomsite;
ou à la rigeur
$nomsite = $config->environnement[0]->nomsite;


en fait, ça ne regle toujours pas mon problème, car le résultat est le
meme : ça ne retourne pas une string, mais un objet :
object(SimpleXMLElement)#7 (1) { [0]=> string(12) "Site de test" }


Bon, j'ai réussi à régler mon problème : que ce soit dans la
configuration de départ ou celle ci, je vous livre la solution :

$nomsite = strval($config->environnement[0]->nomsite);


et voilà ! je peut maintenant attribuer la valeur à une constante !
j'aurrais bien galéré sur ce coup.