IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Convertir un fichier JSON dans un format XML en PHP


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Femme Profil pro
    Inscrit en
    Mars 2011
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2011
    Messages : 72
    Points : 50
    Points
    50
    Par défaut Convertir un fichier JSON dans un format XML en PHP
    Salut à tous,
    Je cherche a convertir un ficher json en XML par PHP, Pour cela j'ai commencé a décoder le contenu de ma ficher en PHP puis j'ai développé une fonction
    qui fait la conversion de PHP en XML. le programme m'affiche un erreur.
    voici le code en PHP
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    <?php
    function array_to_xml($array, &$xml_data) {
     
       foreach($array as $key => $value) {
            if(is_array($value)) {
                if(!is_numeric($key)){
                    $subnode = $xml__data->addChild("$key");
                    array_to_xml($value, $subnode);
                }
                else{
                    array_to_xml($value, $xml_data);
                }
            }
            else {
                $xml_data->addChild($key, htmlspecialchars($value));
            }
        }
     
    }
     // Gets JSON file
    $file = file_get_contents("C:/Users/DELL/Desktop/f1.json");
    $contents = utf8_encode($file); 
    $array = json_decode($contents);
    // creating object of SimpleXMLElement
    $xml_data = new SimpleXMLElement('<?xml version="1.0"?><data></data>');
    // function call to convert array to xml
    array_to_xml($array,$xml_data);
    //saving generated xml file; 
    $result = $xml_data->asXML('C:/Users/DELL/Desktop/name.xml');
     
    ?>
    Warning: htmlspecialchars() expects parameter 1 to be string

  2. #2
    Membre confirmé
    Avatar de kalimukti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2011
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2011
    Messages : 262
    Points : 451
    Points
    451
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    htmlspecialchars() expects parameter 1 to be string
    peut-être as-tu une valeur nulle dans ton $value ? écoute là et vérifie
    My daughter, my laptop, my bike and my double-sticks...

  3. #3
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    Je te conseil d’utiliser la fonction standard PHP réalisant cela pour toi :
    json_decode()

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <?php
    $json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
     
    var_dump(json_decode($json));
    var_dump(json_decode($json, true));
     
    ?>
    Résultat :
    object(stdClass)#1 (5) {
    ["a"] => int(1)
    ["b"] => int(2)
    ["c"] => int(3)
    ["d"] => int(4)
    ["e"] => int(5)
    }

    array(5) {
    ["a"] => int(1)
    ["b"] => int(2)
    ["c"] => int(3)
    ["d"] => int(4)
    ["e"] => int(5)
    }
    Plus simple, plus propre.

    EDIT: réponse à coté de la plaque

    Mais la partie php vers xml est très bien fait dans cette exemple:
    http://vrushank.in/json-to-xml-conversion-php/
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    function arrayToXml($array, $rootElement = null, $xml = null) {
    		$_xml = $xml;
     
    		if ($_xml === null) {
    			$_xml = new SimpleXMLElement($rootElement !== null ? $rootElement : '<root><root/>');
    		}
     
    		foreach ($array as $k => $v) {
    			if (is_array($v)) { //nested array
    				arrayToXml($v, $k, $_xml->addChild($k));
    			} 
    			else {
    				$_xml->addChild($k, $v);
    			}
    		}
    		return $_xml->asXML();
    	}
    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  4. #4
    Membre du Club
    Femme Profil pro
    Inscrit en
    Mars 2011
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2011
    Messages : 72
    Points : 50
    Points
    50
    Par défaut
    Citation Envoyé par kolodz Voir le message
    Je te conseil d’utiliser la fonction standard PHP réalisant cela pour toi :
    json_decode()

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <?php
    $json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
     
    var_dump(json_decode($json));
    var_dump(json_decode($json, true));
     
    ?>
    Résultat :


    Plus simple, plus propre.

    EDIT: réponse à coté de la plaque

    Cordialement,
    Patrick Kolodziejczyk.
    j'ai testé avec ces deux Json_decode, il m'affiche un autre erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Warning: Invalid argument supplied for foreach()
    je pense que le problème est dans la fonction array_to_xml

  5. #5
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    Peux-tu nous donner le contenu de F1 ?
    Comme cela on pourra tester à l'identique et reproduire.

    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  6. #6
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    On peux avoir le fichier json ?

  7. #7
    Membre du Club
    Femme Profil pro
    Inscrit en
    Mars 2011
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2011
    Messages : 72
    Points : 50
    Points
    50
    Par défaut
    Merci bcp ça marche
    désolé, j'ai oublié de mettre la contenu de deuxième json-decode dans le variable $array

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 04/11/2009, 01h57
  2. Arborescence de fichiers representee dans un document xml
    Par saragaglia dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 25/01/2009, 18h38
  3. Convertir un fichier xls dans une base mysql
    Par matinho dans le forum Débuter
    Réponses: 2
    Dernier message: 10/11/2008, 14h15
  4. Convertir un fichier .jar dans un autre format.
    Par Strappal dans le forum Java ME
    Réponses: 2
    Dernier message: 29/06/2006, 19h32
  5. fichier de sauvegarde au format XML
    Par freecell31 dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 22/05/2006, 00h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo