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

MFC Discussion :

MSXML Writer et DOMDocument


Sujet :

MFC

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    731
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 731
    Points : 574
    Points
    574
    Par défaut MSXML Writer et DOMDocument
    Bon voilà mon bout de 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
     
       typedef MSXML2::IMXWriterPtr XMLWriterPtr;
       XMLWriterPtr m_Writer;
       CoCreateInstance (CLSID_MXXMLWriter, NULL, CLSCTX_INPROC_SERVER, IID_IMXWriter, (LPVOID FAR*)&m_Writer);
       if (m_Writer) {
          m_Writer->put_standalone(0);
          m_Writer->put_encoding(_bstr_t("UTF-8"));
          VARIANT vvariant;
          V_BYREF(&vvariant) = docxml.m_DocumentPtr;
          m_Writer->put_output(vvariant);
          m_Writer->flush();
       }
     
       docxml.WriteToFile ("D:\\xmlwrote.xml");
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    docxml.m_DocumentPtr
    est de type :
    Normalement, ce code est censé me créer un document XML avec une identataion correcte (cad avec les whitespace).
    MAIS, lorsque je crée le document (dernière ligne de code) et que je regarde le fichier produit ; pas de bol, il a été créé sans l'aide de mon Writer.

    Voilà le code de la méthode WriteToFile :
    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
     
    BOOL XMLNS::XMLDocument::WriteToFile (const CString& inFileName)
    {
       if (m_DocumentPtr != NULL) {
          HRESULT hr = m_DocumentPtr->save(_variant_t(inFileName));
          if (!hr) {
             return TRUE;
          }
          else {
             return FALSE;
          }
       }
       else {
          return FALSE;
       }
    }
    La question que je me pose, est-ce que la méthode save de DOMDocument (mal documentée sur msdn) ne prend pas en compte mon writer XML ?
    Est-ce que le fait de passer un VARIANT BYREF pose problème ?
    Ou autre chose ?
    Merci si quelqu'un a une réponse, j'ai vu sur msdn, sur des forums en anglais, que dalle !

    PS : je ne veux pas d'une solution en passant par du xslt car ça ne serait pas optimisé.

    Merci beaucoup

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    731
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 731
    Points : 574
    Points
    574
    Par défaut
    J'ai regardé un peu plus la doc sur msdn, peut-être convertir mon arbre DOm en SAX pour pouvoir utiliser mon Writer ?
    Pourtant, il est spécifié que dans la méthode put_output de IXMLWriter, on peut lui passer un DOMDocument en paramètre...

Discussions similaires

  1. [MSXML] writer XML
    Par ep31 dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 14/12/2005, 17h51
  2. [msxml] pb a l'execution
    Par BainE dans le forum MFC
    Réponses: 3
    Dernier message: 23/05/2005, 14h54
  3. [XML+XSLT+MSXML] Ecrire ses propres fonctions
    Par görgh dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 19/05/2005, 13h04
  4. [Writer] Retour ligne
    Par Mister Nono dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 23/01/2004, 15h23
  5. [MSXML] Comment empécher la conversion des entités ?
    Par nima dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 08/11/2002, 14h14

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