Parcours fichier xml contenant une sous-rubrique
Bonjour,
Pour les besoins d'un plugin galerie je dois intégrer la gestion des images dans le fichier xml (ordre et nom affiché) le hic est que j'ai un problème pour parcourir le fichier xml que je génère.
Voila la structure que peux avoir le fichier :
Le problème est pour la section "pictures" je n'arrive pas à la parcourir, exemple de code que j'utilise :
Si vous avez une idée ou une piste je suis preneur.
Merci.
Pour les besoins d'un plugin galerie je dois intégrer la gestion des images dans le fichier xml (ordre et nom affiché) le hic est que j'ai un problème pour parcourir le fichier xml que je génère.
Voila la structure que peux avoir le fichier :
[== XML ==]
<?xml version='1.0' encoding='UTF-8'?>
<document>
<galerie number="0001" active="1" menu="1" user="002" delete="0">
<name><![CDATA[sculpture]]></name>
<root_dir><![CDATA[sculpture]]></root_dir>
<first><![CDATA[1]]></first>
<parent><![CDATA[]]></parent>
<extensions><![CDATA[jpg,JPG,jpeg,JPEG]]></extensions>
<sort><![CDATA[sort]]></sort>
<prive><![CDATA[]]></prive>
<password><![CDATA[]]></password>
<menu_name><![CDATA[Sculpture]]></menu_name>
<activeSeparateur></activeSeparateur>
<separateur></separateur>
<representative></representative>
<template></template>
<displayName>1</displayName>
<displayThumb>1</displayThumb>
<displaySlideShow></displaySlideShow>
<content><![CDATA[blabla]]></content>
<pictures>
</pictures>
</galerie>
<galerie number="0002" active="1" menu="1" user="002" delete="0">
<name><![CDATA[braise]]></name>
<root_dir><![CDATA[sculpture/braise]]></root_dir>
<first><![CDATA[0]]></first>
<parent><![CDATA[0001]]></parent>
<extensions><![CDATA[jpg,JPG,jpeg,JPEG]]></extensions>
<sort><![CDATA[sort]]></sort>
<prive><![CDATA[]]></prive>
<password><![CDATA[]]></password>
<menu_name><![CDATA[Sculpture : "Braise"]]></menu_name>
<activeSeparateur>0</activeSeparateur>
<separateur></separateur>
<representative>braise-04.tb.jpg</representative>
<template></template>
<displayName>0</displayName>
<displayThumb>1</displayThumb>
<displaySlideShow>0</displaySlideShow>
<content><![CDATA[]]></content>
<pictures>
<img filename="braise-001.jpg"><![CDATA[braise-001.jpg]]></img>
<img filename="braise-002.jpg"><![CDATA[braise-002.jpg]]></img>
<img filename="braise-04.jpg"><![CDATA[braise-04.jpg]]></img>
<img filename="braise-05.jpg"><![CDATA[braise-05.jpg]]></img>
<img filename="braise-06.jpg"><![CDATA[braise-06.jpg]]></img>
</pictures>
</galerie>
</document>
Le problème est pour la section "pictures" je n'arrive pas à la parcourir, exemple de code que j'utilise :
[== PHP ==]
public function getGaleries() {
$filename = PLX_PLUGINS.'staticgaleries/galeries.xml';
if(file_exists($filename)) {
$data = implode('',file($filename));
$parser = xml_parser_create(PLX_CHARSET);
xml_parser_set_option($parser,XML_OPTION_CASE_FOLDING,0);
xml_parser_set_option($parser,XML_OPTION_SKIP_WHITE,0);
xml_parse_into_struct($parser,$data,$values,$iTags);
xml_parser_free($parser);
if(isset($iTags['galerie']) AND isset($iTags['name'])) {
$nb = sizeof($iTags['name']);
$size=ceil(sizeof($iTags['galerie'])/$nb);
for($i = 0; $i < $nb; $i++) {
$attributes = $values[$iTags['galerie'][$i*$size]]['attributes'];
if($attributes['delete'] != 1) {
$number = $attributes['number'];
$this->aGaleries[$number]['name'] = plxUtils::getValue($values[$iTags['name'][$i]]['value']);
$this->aGaleries[$number]['user'] = $attributes['user'];
$this->aGaleries[$number]['active'] = intval($attributes['active']);
$this->aGaleries[$number]['menu'] = intval($attributes['menu']);
$this->aGaleries[$number]['delete'] = intval($attributes['delete']);
$this->aGaleries[$number]['first'] = plxUtils::getValue($values[$iTags['first'][$i]]['value']);
$this->aGaleries[$number]['parent'] = plxUtils::getValue($values[$iTags['parent'][$i]]['value']);
$this->aGaleries[$number]['root_dir'] = plxUtils::getValue($values[$iTags['root_dir'][$i]]['value']);
$this->aGaleries[$number]['extensions'] = plxUtils::getValue($values[$iTags['extensions'][$i]]['value']);
$this->aGaleries[$number]['sort'] = plxUtils::getValue($values[$iTags['sort'][$i]]['value']);
$this->aGaleries[$number]['prive'] = plxUtils::getValue($values[$iTags['prive'][$i]]['value']);
$this->aGaleries[$number]['password'] = plxUtils::getValue($values[$iTags['password'][$i]]['value']);
$this->aGaleries[$number]['menu_name'] = plxUtils::getValue($values[$iTags['menu_name'][$i]]['value']);
$this->aGaleries[$number]['activeSeparateur'] = plxUtils::getValue($values[$iTags['activeSeparateur'][$i]]['value']);
$this->aGaleries[$number]['separateur'] = plxUtils::getValue($values[$iTags['separateur'][$i]]['value']);
$this->aGaleries[$number]['representative'] = plxUtils::getValue($values[$iTags['representative'][$i]]['value']);
$this->aGaleries[$number]['template'] = plxUtils::getValue($values[$iTags['template'][$i]]['value']);
$this->aGaleries[$number]['displayName'] = plxUtils::getValue($values[$iTags['displayName'][$i]]['value']);
$this->aGaleries[$number]['displayThumb'] = plxUtils::getValue($values[$iTags['displayThumb'][$i]]['value']);
$this->aGaleries[$number]['displaySlideShow'] = plxUtils::getValue($values[$iTags['displaySlideShow'][$i]]['value']);
$this->aGaleries[$number]['content'] = plxUtils::getValue($values[$iTags['content'][$i]]['value']);
if(isset($iTags['pictures'])) {
$nb_pic = sizeof($iTags['pictures']);
$size_pic = ceil(sizeof($iTags['pictures'])/$nb_pic);
for($p = 0; $p < $nb_pic; $p++) {
$attributes_pic = $values[$iTags['galerie'][$i*$size]]['pictures'][$p*$size_pic]['attributes'];
echo $attributes_pic['filename'].' - '.plxUtils::getValue($values[$iTags['pictures'][$p]]['value']);
}
}
}
}
}
}
}
Si vous avez une idée ou une piste je suis preneur.
Merci.
J'ai un string de l'array
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Bon j'ai avancé sur mon problème. Toujours sur la même base xml j'ai ce code php qui fonctionne presque.
Il y a qu'un problème, le tableau contient la sous-rubrique xml pictures mais dans les deux galeries alors que seul la 2eme devrait en avoir une :
J'ai un string de l'array
print_r($iTags);
J'ai un string de l'array
Merci
J'ai un string de l'array
De plus, il vaut mieux définir $aGaleries[$number] = array(); car si tu ne le fais pas, tu peux avoir des bugs qui peuvent apparaître dans des scripts liés aux résultats (affichage de pictures par exemple) ou tri des pictures, etc...
Pour les plxUtils et les $this oubliés, c'est parce que j'avais réécrit une fonction indépendante de pluxml pour éviter d'avoir à tout charger pour faire les tests.
J'ai un string de l'array