Structure xml pour un plugin
flipflip
Member
Salut, pour le plugin plxcoinslider j'essaie de créer un fichier xml par slideshow dans lequel je stock la configuration mais aussi les images et textes lié à ces images. Voila à quoi ressemble le array que je veux sauvegarder :
Merci d'avance.
Array
(
[id] => 0001
[name] => test
[width] =>
[height] =>
[spw] =>
[sph] =>
[delay] =>
[sdelay] =>
[opacity] =>
[titleSpeed] =>
[effet] =>
[navigation] =>
[links] =>
[hoverPause] =>
[image] => Array
(
[number] => 0001
[imagename] => piscine.jpg
[description] => des
[link] => lin
)
)
Côté php j'ai une fonction charger d'écrire le fichier
public function editSlideshow($content) {
$xml = "<?xml version=\"1.0\" encoding=\"".PLX_CHARSET."\"?>\n";
$xml .= "<document>\n";
foreach ($content as $key => $slideshow) {
if(is_array($content[ $key ] )) {
$xml .= "\t<image>\n";
foreach ($content[ $key ] as $iKey => $image) {
$xml .= "\t\t<".$iKey.">".$image."</".$iKey.">\n";
}
$xml .= "\t</image>\n";
} else {
$xml .= "\t<".$key.">".$slideshow."</".$key.">\n";
}
}
$xml .= "</document>";
# On écrit le fichier
$filename = $_SESSION['user'].'.'.$content['id'].'.'.$content['name'].'.xml';
if(plxUtils::write($xml, PLX_ROOT.'plugins/plxcoinslider/slideshow/'.$filename)) {
return plxMsg::Info(L_SAVE_SUCCESSFUL);
} else {
return plxMsg::Error(L_SAVE_ERR.' '.PLX_ROOT.'plugins/plxcoinslider/slideshow/'.$filename);
}
}
voila une fois écrit dans le xml
<?xml version="1.0" encoding="UTF-8"?> <document> <id>0001</id> <name>tes</name> <width>900</width> <height></height> <spw></spw> <sph></sph> <delay></delay> <sdelay></sdelay> <opacity></opacity> <titleSpeed></titleSpeed> <effet>random</effet> <navigation>true</navigation> <links>true</links> <hoverPause>true</hoverPause> <image> <number>0001</number> <imagename>logfin+ombre.jpg</imagename> <description>des</description> <link>lin</link> </image> </document>La ou je bloc c'est pour la lecture du xml surtout la partie avec image, je vois vraiment pas trop comment faire.
Merci d'avance.
J'ai un string de l'array
0
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
J'ai un string de l'array
L'écriture du fichier xml ne me pose pas problème mais c'est le chargement des paramètres qui coince et particulière le "sous" tableau des images.
voila la fonction que j'utilise pour lire le fichier xml :
public function getSlideshow($content) { $filename = PLX_PLUGINS.'plxcoinslider/slideshow/'.$_SESSION['user'].'.'.$content.'.xml'; # Mise en place du parseur XML $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); $nb = sizeof($iTags['name']); # Recuperation des valeurs de nos champs XML for($i=0; $i < $nb; $i++) { $slideshow['id'] = isset($iTags['id'][$i])?$values[ $iTags['id'][$i] ]['value']:''; $slideshow['name'] = isset($iTags['name'][$i])?$values[ $iTags['name'][$i] ]['value']:''; $slideshow['width'] = isset($iTags['width'][$i])?$values[ $iTags['width'][$i] ]['value']:''; $slideshow['height'] = isset($iTags['height'][$i])?$values[ $iTags['height'][$i] ]['value']:''; $slideshow['spw'] = isset($iTags['spw'][$i])?$values[ $iTags['spw'][$i] ]['value']:''; $slideshow['sph'] = isset($iTags['sph'][$i])?$values[ $iTags['sph'][$i] ]['value']:''; $slideshow['delay'] = isset($iTags['delay'][$i])?$values[ $iTags['delay'][$i] ]['value']:''; $slideshow['sdelay'] = isset($iTags['sdelay'][$i])?$values[ $iTags['sdelay'][$i] ]['value']:''; $slideshow['opacity'] = isset($iTags['opacity'][$i])?$values[ $iTags['opacity'][$i] ]['value']:''; $slideshow['titleSpeed'] = isset($iTags['titleSpeed'][$i])?$values[ $iTags['titleSpeed'][$i] ]['value']:''; $slideshow['effet'] = isset($iTags['effet'][$i])?$values[ $iTags['effet'][$i] ]['value']:''; $slideshow['navigation'] = isset($iTags['navigation'][$i])?$values[ $iTags['navigation'][$i] ]['value']:''; $slideshow['links'] = isset($iTags['links'][$i])?$values[ $iTags['links'][$i] ]['value']:''; $slideshow['hoverPause'] = isset($iTags['hoverPause'][$i])?$values[ $iTags['hoverPause'][$i] ]['value']:''; if(is_array($iTags['image'][$i])) { echo '---'.$values[ $iTags['image'][$i] ]['value'].'<br>'; foreach($values[ $iTags['image'][$i] ]['value'] as $key => $image) { $slideshow['image'][ $key ] = $image; } } # On retourne le tableau return $slideshow; }C'est à partir du is_array que ça bloque. En fait je ne sais pas trop quoi faire contrôler à is_array pour vérifier si c'est bien un tableau.J'ai un string de l'array