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

XML Discussion :

[TinyXML] Ouverture de fichier


Sujet :

XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 18
    Par défaut [TinyXML] Ouverture de fichier
    Bonjour,

    Apres avoir reussi a sauver un fichier, je voulais reussir a le charger dans mon petit programme ! Mais j'ai une vilaine erreur "Failed to open file" qui apparait...

    Voila le code :

    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
     
    #include "tinyxml.h"
    #include <iostream>
     
    class LoadSettings
    {
    	public : //load part of the class
    		void loadXMLFile ( char* fileName ) ;
    		void loadImageFile() ;
     
    		std::string getFileName() ;
    		std::string getDataType() ;
    		int getDimensions() ;
    	private :
    		TiXmlDocument m_document ;
    		std::string m_fileToProcess ;
    		std::string m_datatype ;
    		int m_dimensions ;
    };
     
    void LoadSettings::loadXMLFile ( char* fileName )
    {
    	TiXmlDocument m_document ( fileName ) ;
    	if ( !m_document.LoadFile() )
    	{
    		std::cerr << "Error loading XML File" << std::endl ;
    		std::cerr << "error #" << m_document.ErrorId() << " : " << m_document.ErrorDesc() << std::endl ;
    	}
    }
     
    void LoadSettings::loadImageFile()
    {
    	TiXmlHandle docHandle ( &m_document ) ;
     
    	TiXmlElement* xmlElement = docHandle.FirstChild ("Image").ToElement();
    	if ( xmlElement ) //Check if xmlElement exists
    	{
    		m_fileToProcess = std::string ( xmlElement->Attribute ( "name" ) ) ;
    		m_datatype = std::string ( xmlElement->Attribute ( "datatype" ) ) ;
    		xmlElement->QueryIntAttribute ( "dimension", &m_dimensions ) ;
    	}
    }
     
    std::string LoadSettings::getFileName()
    {
    	return m_fileToProcess ;
    }
     
    std::string LoadSettings::getDataType()
    {
    	return m_datatype ;
    }
     
    int LoadSettings::getDimensions()
    {
    	return m_dimensions ;
    }
     
    int main ( int argc, char *argv[] )
    {
    	LoadSettings settings ;
    	settings.loadXMLFile( argv[1] ) ;
    	settings.loadImageFile() ;
     
    	std::cout << settings.getFileName() << std::endl ;
    	std::cout << settings.getDataType() << std::endl ;
    	std::cout << settings.getDimensions() << std::endl ;
     
    	return 0 ;
    }
    et le fichier 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
     
    <?xml version="1.0" ?>
    <Image name="/usr/people/loic/Pix/test.jpg" datatype="unsigned char" dimension="2">
        <Smoothing>
            <GradientAnisotropicDiffusionFilter iterations="5" timeStep="0.0625" conductance="3" />
            <CurvatureAnisotropicDiffusionFilter iterations="5" timeStep="0.0625" conductance="1" />
            <GradientAnisotropicDiffusionFilter iterations="5" timeStep="0.0625" conductance="3.05" />
        </Smoothing>
        <Thresholding>
            <value1 value="35" />
            <value2 value="58" />
            <value3 value="137" />
            <value4 value="207" />
            <value5 value="249" />
        </Thresholding>
        <Homogenization NumberOfSamples="1000" XSize="10" YSize="10" ZSize="0" />
    </Image>
    En fait si je lance l'appli sous kdevelop l'erreur apparait, mais en konsole je vois seulement deux sauts de ligne et un entier au hasard ! Ce dernier vient surement de la non initialisation de m_dimensions.

    Quelqu'un a une idee ?

    Merci !

    Loic

    PS : Dsl pour les accents, j'ai un clavier allemand...

  2. #2
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 18
    Par défaut
    Bonjour !

    Bon et bien ca progresse ! Pour eviter l'erreur d'ouverture, il suffit de mettre le chemin absolu et non pas relatif du fichier xml.

    Par contre mes accesseurs ne fonctionnent toujours pas, une idee ?

  3. #3
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 18
    Par défaut
    Bon alle ! c'est regle ! J'me suis trompe dans l'initialisation de m_document !
    Il faut remplacer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    void LoadSettings::loadXMLFile ( char* fileName )
    {
    	TiXmlDocument m_document ( fileName ) ;
    	if ( !m_document.LoadFile() )
    	{
    		std::cerr << "Error loading XML File" << std::endl ;
    		std::cerr << "error #" << m_document.ErrorId() << " : " << m_document.ErrorDesc() << std::endl ;
    	}
    }
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    void LoadSettings::loadXMLFile ( char* fileName )
    {
    	m_document = TiXmlDocument( fileString ) ;
    	if ( !m_document.LoadFile() )
    	{
    		std::cerr << "Error loading XML File" << std::endl ;
    		std::cerr << "error #" << m_document.ErrorId() << " : " << m_document.ErrorDesc() << std::endl ;
    	}
    }
    ou comment perdre du temps sur une erreur d'inattention...

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

Discussions similaires

  1. [TinyXML] Ouverture d'un fichier XML
    Par Luis Vieira da Silva dans le forum XML
    Réponses: 0
    Dernier message: 31/07/2015, 14h43
  2. [TinyXML] Ouverture de fichier XML
    Par FantzFoXx dans le forum XML
    Réponses: 1
    Dernier message: 10/07/2015, 17h18
  3. Ouverture de fichier en api
    Par Michaël dans le forum Windows
    Réponses: 9
    Dernier message: 10/12/2003, 16h47
  4. Réponses: 2
    Dernier message: 26/02/2003, 15h18
  5. [VBA-E] Evenement ouverture de fichier
    Par gjeff dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 13/12/2002, 09h42

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