PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 31-05-2014 21:41:21

cv21
Membre
Inscription : 31-05-2014
Messages : 2

Récupérer une valeur dans une structure xml particulière

Bonjour à tous,

Je souhaite via une interface php/html/css modifier un fichier structuré comme un xml.
En fait il s'agit d'un projet réalisé avec le logiciel Apple Motion (un logiciel d'animation graphique).
Le fichier du projet a une extension .motn mais semble structuré comme un xml.


Le fichier est visible et téléchargeable  à l'adresse suivante : meteo.motn (choisir l'encodage UTF8)

Je n'arrive malheureusement pas à réaliser la première étape : récupérer les informations que je souhaite : ici il s'agit de la valeur "contenu01" située entre 2 balises <text>. J'ai essayé d'ajouter un Id "370" afin d'y parvenir plus facilement ...toujours rien. (A noter cet Id ne figure pas dans le lien, j'ai préféré laisser le projet dans son état original).

voici le code PHP fonctionnel avec des xml simples mais pas avec celui que je souhaite !

<?php

$dom = new DOMDocument();

$dom->validateOnParse = true;
$dom->load('meteo.motn');    

$dom->preserveWhiteSpace = false;

$temperature01 = $dom->getElementById("370");
echo $temperature01->nodeValue;

?>

Par avance merci.

Suivi des étapes:
- d'abord j'ai cherché à écrire un script en applescript avec la bibliothèque XMLLib.osax sans résultat avec ce fichier
- puis je suis passé à php simplexml et tentatives diverses avec DOM
- ce script fonctionne avec l'exemple suivant : http://stackoverflow.com/questions/3391 … d-problems
- tentatives sans DOCTYPE
- essais de décomposer le problème en étapes simples...le problème arrive lorsque j'utilise ce fichier xml apparement particulier

Dernière modification par cv21 (31-05-2014 21:44:18)

Hors ligne

#2 01-06-2014 11:22:04

cv21
Membre
Inscription : 31-05-2014
Messages : 2

Re : Récupérer une valeur dans une structure xml particulière

...je réponds à mon post...étant toujours débutant en php depuis 10 ans j'ai pu contourner le problème.
J'abandonne les manipulations xml et m'appuie sur les commandes de manipulation de fichiers.
Le principe :
- ouvrir le fichier meteo.motn et le découper en petits bouts avec text edit (bloc note de mac) entre chaque variable par exemple les températures
- dans le script d'écriture du fichier  inclure ces petits bouts et créer une chaine petitboutdebut+temperature01+petitbout01+temperature02+petitbout....etc..

Remarques de compatibilité avec l'application Apple Motion
- la chaîne de caractère constituant le contenu du fichier doit être encodée en UTF8
- le logiciel considère un retour à la ligne comme incorrect donc la structure doit être parfaitement respectée pour cela j'ai dû découper au retour à la ligne près le /n ne marche pas

base du script avec une seule valeur qui sera par la suite envoyée via un formulaire :

<?php
    //inclusion des differentes parties du Fichier .motn
    include_once 'MeteoDebut.php'; //petit bout debut
    include_once 'MeteoFin.php';// petit bout de fin

    $temperature01='VALEUR01';//valeur à changer
    $NewMeteo = $DebutXML.$temperature01.$FinXML; //concaténation de l'ensemble du contenu du fichier
   
    unlink('meteo.motn');//petite sécurité
    $monfichier = fopen('meteo.motn', 'w+');
          //ouverture du fichier
          //w+ Ouvre en lecture et écriture  place le pointeur au début réduit la taille du fichier à 0. Si le fichier n'existe pas, on tente de le créer.
    fseek($monfichier, 0); // On remet le curseur au début du fichier
    fputs($monfichier, utf8_encode($NewMeteo)); // On écrit le contenu en l'encodant en UTF8
    fclose($monfichier);//fermeture du fichier

?>

Dernière modification par cv21 (01-06-2014 11:57:04)

Hors ligne

Pied de page des forums