Problème pour loader un fichier xml via la nouvelle version de tinyxml [Résolu]

Signaler
Messages postés
25
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
23 juillet 2006
-
Messages postés
25
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
23 juillet 2006
-
Bonjour,
J’ai changé la version de tinyxml du projet et en transformant des variables  const std::string * en const char* car la nouvelle version l’exigeai et la compilation ce passe sans problème.

Par contre à l’exécution il ne trouve plus mes fichiers *.xml (alors qu’avec l’ancienne version de tinyxml cela fonctionnait).

L’objet doc renvoie toujours une erreur à cette ligne :
if (!doc || !doc->LoadFile() || !doc->Error())

exemple d'erreur renvoyée:

+    doc    0x00b975b8 {error=false errorId=0 errorDesc={npos=4294967295 rep_=0x00550c20 struct TiXmlString::Rep TiXmlString::nullrep_ nullrep_={size=0 capacity=0 str=0x00550c28 "" } } ...}    TiXmlDocument *
voici le code de la fonction:
bool CTranslation::GetNameLanguageFile(char* szFileName, char* szNameLanguage)
{
    const char* szTmp;
    
    if (!szFileName || strcmp(szFileName, "") == 0)
        return false;

    // Check if the file is really existing
    TiXmlDocument* doc = new TiXmlDocument(szFileName);
    if (!doc || !doc->LoadFile() || !doc->Error())
        return false;

    // Load the informations contained in the xml file
    TiXmlNode*        xmlNode            = doc->FirstChild("MeuhMeuhTV");
    TiXmlElement*    xmlTopElement    = NULL;
    strcpy(szNameLanguage, "");

    if (xmlNode)
    {
        xmlTopElement = xmlNode->ToElement();

        if (szTmp)
            strcpy(szNameLanguage, szTmp);

    }

    delete doc;

    return (strcmp(szNameLanguage, "") != 0);
}


Il est à noté que "szFileName" donne bien la bonne adresse d'un fichier xml existant (ex: "c:\moi.xml" )

Merci de bien vouloir m'aider à trouver d'où vient le problème.

2 réponses

Messages postés
25
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
23 juillet 2006

Le problème est résolut :


Le fichier xml ne respectait pas la norme en effet celui-ci
comportait des é,è etc… et comme il manquait encoding="ISO-8859-2" à
la première ligne la nouvelle version de tinyxml refusait de faire un LoadFile().


@+
Messages postés
25
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
23 juillet 2006

J'ai créer un nouveau mini projet le voici:
==========================================================
// Il s'agit du fichier projet principal pour le projet d'application VC++
// généré en utilisant un Assistant Application.

#include "stdafx.h"
#include <stdio.h>
#include "C:\Documents and Settings\Administrateur\Bureau\Nouveau dossier (10)\TINYXML\tinyxml.h"
#using <mscorlib.dll>
using namespace std;
using namespace System;

int _tmain()
{
    // TODO : remplacez l'exemple de code ci-dessous par votre code.
TiXmlDocument doc("c:\\Francais.xml");
if(!doc.LoadFile()){
Console::WriteLine(S"Pas de fichier");

return 1;
}
  Console::WriteLine(S"Fichier chargé");

}
==========================================================
A chaque fois il me dit qu'il n'y a pas de fichier alors que "c:\Francais.xml" existe :?