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

XML Discussion :

[TinyXML2] Analyse de fichier XML


Sujet :

XML

  1. #1
    Membre à l'essai
    [TinyXML2] Analyse de fichier XML
    Bonjour,

    Suite à un projet scolaire en C++, je dois utiliser TinyXML2. Je me suis donc documenté sur la librairie afin de mener à bien ma tâche. Mais je rencontre un probléme trés simple : il n'arrive pas à naviguer dans mon XML.

    Voici le XML :

    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
     
    <Game>
      <Window>
        <width>600</width>
        <height>500</height>
        <background>joliBackgroundDeGael.jpg</background>
      </Window>
      <Square>
        <Mario>
          <size>
            <width>30</width>
            <height>15</height>
          </size>
          <speedPerFrame>5</speedPerFrame>
          <font>
            <stop>stopMario.jpg</stop>
            <run>runMario.jpg</run>
            <jump>jumpMario.jpg</jump>
          </font>
        </Mario>
      </Square>
    </Game>


    J'ai checké sur le W3C si le XML est bien valide et c'est bien le cas. Il semblerait donc que le probléme ne vienne pas de là.

    Je penche donc vers un soucis de code que voici :

    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
     
    #include "caracteristique.h"
    #include <iostream>
     
    #include <direct.h>
    #define GetCurrentDir _getcwd
     
    using namespace tinyxml2;
     
    const char* parseXML::path = "XMLType.xml";
     
    void parseXML::getDoc()
    {
    	this->doc.LoadFile(this->path);
    	if (this->doc.ErrorID() != 0)
    	{
    		printf("load file=[%s] failed\n", this->doc.GetErrorStr1());
    		printf("load file=[%s] failed\n", this->doc.GetErrorStr2());
    	}
    }
     
    int parseXML::getWindowHeight()
    {
    	if (this->doc.Error())
    		this->getDoc();
     
    	XMLElement *root = this->doc.RootElement();
    	if (!root)
    	{
    		XMLElement *window = root->FirstChildElement("Window");
    		if (!window)
    			std::cout <<  window->FirstChildElement("height")->FirstChild()->ToText() << std::endl;
    	}
    	return 0;
    }


    Mais le soucis c'est que dans le ErrorID, TinyXML me renvoie 0 comme s'il n'y avait aucune erreur.

    Le seul soucis que je vois est que le charBuffer me renvoie :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Element was not closed. Error processing resource 'file:///C:/Users/mbou/AppData/Local/Temp/VSD1.tmp.XML'. Line 1, Positio...
     
    <Game


    De plus les attributs _errorStr1 et _errorStr2 indiquent "Bad Ptr", mais je ne sais pas si c'est normal du fait que ErrorID soit à 0.

    En dehors du message d'erreur que j'obtiens en faisant un XMLVisualiser sous VS2010, je n'ai rien de particulier qui puisse m'aider.

    J'ai fait beaucoup de recherche sur le Net et personne ne semble rencontrer ce soucis.

    Merci d'avance pour votre aide.

  2. #2
    Membre à l'essai
    Bonjour,

    Il y a du nouveau, mon XML renvoie maintenant l'erreur "XML_ERROR_PARSING_TEXT" et l'errorID 10.

    Le XML est toujours le même et il est valide selon le W3C.

    Merci d'avance,