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

C++ Discussion :

Lire un Fichier Xml avec XmlLite IXmlReader


Sujet :

C++

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2013
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Bonjour a tous,
    j'aimerai lire un fichier xml avec le XmlLite mais je n'y parviens pas.
    Au fait je travaille avec Visual Studio 2008. j ai déjà la bibliothèque xmllite ds mon environnement. il me faut juste implémenter une la fonction qui me permettra de lire mon fichier.
    merci de votre aide.

    jusqu'ici voila ce que j'ai fait

    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
    void CFred::XmlReader()
    {
    	CComPtr<IXmlReader> pReader;
    	CComPtr<IStream> pStream;
    	XmlNodeType nodeType = XmlNodeType_None;
    	HRESULT result = S_OK;
     
    	const WCHAR* ppwszPrefix;
        const WCHAR* ppwszLocalName;
        const WCHAR* pwszValue;
        UINT pcwchPrefix;
     
    	result = CreateXmlReader(__uuidof(IXmlReader), (void**) &pReader, NULL);
     
    	// create stream object
    	result = SHCreateStreamOnFile(L"fred.xml", STGM_READ | STGM_SHARE_DENY_READ, &pStream);
    	result = pReader->SetInput(pStream); 
     
    	while (S_OK == (pReader->Read(&nodeType)))
    	{
    		switch (nodeType)
    		{
    		case XmlNodeType_Element:
    			result = pReader->GetLocalName(&ppwszLocalName, NULL);
    		}
    	}
     
     
     
    	for(HRESULT result = pReader->MoveToFirstAttribute();
    		S_OK == result;
    		result = pReader->MoveToNextAttribute())
    	{
    		/*pReader->GetPrefix(*/
    	}
     
    }
    J'ai toujours eu à ouvrir mes fichiers xml avec ifstream(""). Mais par cette manière j'ai souvent eu le problème avec l'encodage. Cette méthode fonctionne avec l'encodage : encoding="utf-8". Mais dès lors que l'encodage est ASCII il y a problème de lecture.
    Dans mes recherches j'ai lu que XmlLite ( IXmlReader) s'occupe de l'encodage pendant la lecture.
    Besoin d'aide car je ne m'y connais pas trop avec le XmlLite
    merci bien

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    734
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 734
    Points : 1 475
    Points
    1 475
    Par défaut
    Citation Envoyé par NoKnowledge Voir le message
    Mais dès lors que l'encodage est ASCII il y a problème de lecture.
    Mais encore?
    • Message d'erreur?
    • Plantage?
    • Corruption de contenu?
    • ...?

  3. #3
    Inactif  

    Homme Profil pro
    Ingénieur test de performance
    Inscrit en
    Décembre 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur test de performance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 986
    Points : 2 605
    Points
    2 605
    Par défaut
    Bonjour.

    Je n'ai pas encore utilisé XmlLite, mais cela ne saurait tarder.

    Il faut lire ici, à la section "Encoding Detection" :

    http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx

    Si l'encodage n'est pas spécifié dans le document XML, c'est à toi de le faire, avec par exemple CreateXmlReaderInputWithEncodingName ou CreateXmlReaderInputWithEncodingCodePage.

    Si l'encodage n'est pas spécifié dans le xml, XmlLite ne peut pas le deviner. Donc oui XmlLite s'occupe de l'encodage, mais encore faut-il que le fichier xml contienne son type d'encodage. Et j'imagine que le xml en ASCII ne le précise pas. Et comme j'imagine aussi que XmlLite est en utf-8 par défaut, ça coince avec le fichier ASCII.

Discussions similaires

  1. Lire un Fichier Xml avec XmlLite
    Par NoKnowledge dans le forum Débuter
    Réponses: 1
    Dernier message: 27/11/2013, 17h07
  2. Lire un fichier XML avec VBA
    Par Mouse dans le forum Général VBA
    Réponses: 1
    Dernier message: 15/06/2006, 19h56
  3. [XML] lire un fichier xml avec php
    Par java_fun dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 31/03/2006, 12h21

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