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 :

travailler avec le format XML


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé

    Profil pro
    Inscrit en
    Août 2008
    Messages
    1 222
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 1 222
    Par défaut travailler avec le format XML
    Bonjour, j'aurai besoin d'un coup de main, j'ai des fichiers xml qui proviennent d'un logiciel de QCM, le problème c'est qu'on veut plus l'utiliser car il est propriétaire, on souhaite utiliser un open source, malheureusement j'ai essayer d'importer ce fichier sur le nouveau LMS mais cela ne fonctionne, les balise XML sont différents entre ces 2 applications.

    Mon idée est d'extraire les données de l'ancienne application, et les rechargés dans le nouveau format.

    voici un aperçu d'un fichier QML de l'ancienne application

    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
     
    <?xml version="1.0" standalone="no"?>
    <!DOCTYPE QML SYSTEM "QML_V3.dtd">
     
    <QML>
     
    <QUESTION ID="7815466317071926" DESCRIPTION="007-infos suffisantes" TOPIC="QUESTIONS-TEST\lchabanne" STATUS="Normal">
      <CONTENT TYPE="text/html"><![CDATA[Etes-vous suffisamment informés de ce qui se passe dans le Département ? Des actions en cours ?]]></CONTENT>
      <ANSWER QTYPE="YN" SUBTYPE="VERT">
        <CHOICE ID="0">
          <CONTENT TYPE="text/html"><![CDATA[Oui]]></CONTENT>
        </CHOICE>
        <CHOICE ID="1">
          <CONTENT TYPE="text/html"><![CDATA[Non]]></CONTENT>
        </CHOICE>
      </ANSWER>
      <OUTCOME ID="0 Oui" SCORE="0">
        <CONDITION>"0"</CONDITION>
        <CONTENT TYPE="text/html"><![CDATA[]]></CONTENT>
      </OUTCOME>
      <OUTCOME ID="1 Non" SCORE="0">
        <CONDITION>"1"</CONDITION>
        <CONTENT TYPE="text/html"><![CDATA[]]></CONTENT>
      </OUTCOME>
    </QUESTION>
     
    </QML>
    et voici le nouveau format de la nouvelle application
    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
     
    <?xml version="1.0" encoding="UTF-8"?>
    <quiz>
    <!-- question: 0  -->
      <question type="category">
        <category>
            <text>$course$/Défaut pour physique6e</text>
     
        </category>
      </question>
     
    <!-- question: 2  -->
      <question type="multichoice">
        <name>
          <text>xml</text>
        </name>
        <questiontext format="html">
          <text><![CDATA[<p>Le xml est une  recette</p>]]></text>
        </questiontext>
        <generalfeedback format="html">
          <text><![CDATA[<p>je suis le vide back</p>]]></text>
        </generalfeedback>
        <defaultgrade>1.0000000</defaultgrade>
        <penalty>1.0000000</penalty>
        <hidden>0</hidden>
        <single>true</single>
        <shuffleanswers>true</shuffleanswers>
        <answernumbering>abc</answernumbering>
        <correctfeedback format="html">
          <text><![CDATA[<p>1</p>]]></text>
        </correctfeedback>
        <partiallycorrectfeedback format="html">
          <text><![CDATA[<p>2</p>]]></text>
        </partiallycorrectfeedback>
        <incorrectfeedback format="html">
          <text><![CDATA[<p>3</p>]]></text>
        </incorrectfeedback>
        <answer fraction="100" format="html">
          <text><![CDATA[<p>notes</p>]]></text>
          <feedback format="html">
            <text><![CDATA[<p>vraix</p>]]></text>
          </feedback>
        </answer>
        <answer fraction="0" format="html">
          <text><![CDATA[<p>faux4</p>]]></text>
          <feedback format="html">
            <text><![CDATA[<p>faux5</p>]]></text>
          </feedback>
        </answer>
        <answer fraction="0" format="html">
          <text><![CDATA[<p>faux5</p>]]></text>
          <feedback format="html">
            <text></text>
          </feedback>
        </answer>
      </question>
     
    <!-- question: 1  -->
      <question type="truefalse">
        <name>
          <text>oxygene</text>
        </name>
        <questiontext format="html">
          <text><![CDATA[<p>Quel est la forumule de l'oxygène?</p>]]></text>
        </questiontext>
        <generalfeedback format="html">
          <text></text>
        </generalfeedback>
        <defaultgrade>1.0000000</defaultgrade>
        <penalty>1.0000000</penalty>
        <hidden>0</hidden>
        <answer fraction="0" format="moodle_auto_format">
          <text>true</text>
          <feedback format="html">
            <text><![CDATA[<p>02</p>]]></text>
          </feedback>
        </answer>
        <answer fraction="100" format="moodle_auto_format">
          <text>false</text>
          <feedback format="html">
            <text></text>
          </feedback>
        </answer>
      </question>
     
    </quiz>
    Que pensez-vous de démarche, j'espère être dans la bonne catégorie, je suppose qu'il faut passer par des regex ?
    je vous remercie de votre réponse

  2. #2
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 325
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 325
    Billets dans le blog
    17
    Par défaut
    je suppose qu'il faut passer par des regex ?
    Surtout pas, utilise plutôt SimpleXML pour lire ton QML ou XSLT pour le transformer.
    Ceci dit il existe peut-être des logiciels de conversion.

    http://fr.php.net/simplexml
    http://fr.php.net/manual/fr/book.xsl.php
    http://zvon.org/xxl/XSLTutorial/Output_fre/index.html

  3. #3
    Membre éprouvé

    Profil pro
    Inscrit en
    Août 2008
    Messages
    1 222
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 1 222
    Par défaut
    merci de ta réponse , j'ai trouver une fonction qui récupère le fichier xml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <?php
    if (file_exists('perception.xml')) {
        $xml = simplexml_load_file('perception.xml');
    print_r($xml);
     
     
    } else {
        exit('Echec lors de l\'ouverture du fichier test.xml.');
    }
    ?>
    cela me donne ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SimpleXMLElement Object ( [QUESTION] => SimpleXMLElement Object ( [@attributes] => Array ( [ID] => 7815466317071926 [DESCRIPTION] => 007-infos suffisantes [TOPIC] => QUESTIONS-TEST\lchabanne [STATUS] => Normal ) [CONTENT] => SimpleXMLElement Object ( [@attributes] => Array ( [TYPE] => text/html ) ) [ANSWER] => SimpleXMLElement Object ( [@attributes] => Array ( [QTYPE] => YN [SUBTYPE] => VERT ) [CHOICE] => Array ( [0] => SimpleXMLElement Object ( [@attributes] => Array ( [ID] => 0 ) [CONTENT] => SimpleXMLElement Object ( [@attributes] => Array ( [TYPE] => text/html ) ) ) [1] => SimpleXMLElement Object ( [@attributes] => Array ( [ID] => 1 ) [CONTENT] => SimpleXMLElement Object ( [@attributes] => Array ( [TYPE] => text/html ) ) ) ) ) [OUTCOME] => Array ( [0] => SimpleXMLElement Object ( [@attributes] => Array ( [ID] => 0 Oui [SCORE] => 0 ) [CONDITION] => "0" [CONTENT] => SimpleXMLElement Object ( [@attributes] => Array ( [TYPE] => text/html ) ) ) [1] => SimpleXMLElement Object ( [@attributes] => Array ( [ID] => 1 Non [SCORE] => 0 ) [CONDITION] => "1" [CONTENT] => SimpleXMLElement Object ( [@attributes] => Array ( [TYPE] => text/html ) ) ) ) ) )
    comment je procède pour récupérer par exemple l'attribut QUESTION ?
    [/code]

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    if (file_exists('perception.xml')) {
        $xml = simplexml_load_file('perception.xml');
    print_r($xml);
    echo 'Id de la question : '.$xml->QUESTION['ID']; // attribut ID de la balise QUESTION 
     
    } else {
        exit('Echec lors de l\'ouverture du fichier test.xml.');
    }
    Sinon, tu peux aussi utiliser Dom : Gestion du XML en PHP 5 : utiliser DOM
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

Discussions similaires

  1. [Mapping] Problème en travaillant avec DB + POJO + XML
    Par nestor_gonze dans le forum Hibernate
    Réponses: 0
    Dernier message: 30/03/2012, 11h42
  2. Requete nom ville pour avoir code postal,avec une base sous format XMl
    Par naouah dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 20/02/2008, 20h00
  3. Travailler avec un fichier XML de grande taille
    Par Jayme65 dans le forum Flash
    Réponses: 9
    Dernier message: 29/05/2006, 17h09
  4. [xslt] For-each dans template avec format XML (row)
    Par Steff1985 dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 17/11/2005, 11h14
  5. Documentation sur la manière de travailler avec le XML en java
    Par DelPiero62 dans le forum Format d'échange (XML, JSON...)
    Réponses: 8
    Dernier message: 26/03/2003, 09h16

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