MSXML Writer et DOMDocument
Bon voilà mon bout de code :
Code:
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"); |
Où 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:
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