Bon voilà mon bout de code :
Où
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");est de type :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 docxml.m_DocumentPtr
Normalement, ce code est censé me créer un document XML avec une identataion correcte (cad avec les whitespace).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 IXMLDOMDocument *
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 :
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 ?
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; } }
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
Partager