Mit MSXML können wir natürlich nicht nur XML-Dokumente laden, sondern auch selber erstellen und speichern. Im Folgenden soll ein bestehendes XML-Dokument um ein zusätzliches Element erweitert werden.
In diesem kleinen Artikel wird grob die Verwendung von MSXML 3.0 in C++ beschrieben.
Damit man MSXML 3.0 in der eigenen C++-Anwendung nutzen kann, benötigt man das MSXML 3.0 SDK, das die entsprechenden Header- und Bibliotheks-Dateien sowie eine (englische) Dokumentation enthält. Nach der Installation des SDKs müssen die Pfade für die Include- und Bibliotheks-Dateien in Visual C++ entsprechend angepasst bzw. hinzugefügt werden, wobei die Bibliotheks-Datei zudem natürlich noch in den Projekteinstellungen erwähnt werden muss.
Häufig benötigt man in Spielen die Möglichkeit eine MP3- oder OGG-Datei abzuspielen. Da dabei DirectSound nicht mehr weiterhelfen kann, muss man auf DirectShow zurück greifen. Im Folgenden ein kleiner Codeschnipsel der die Wiedergabe verdeutlicht.
Es wird die amstrmid.lib benötigt.
Header:
#include <dshow.h>
Für eine einfache Wiedergabe muss man nicht viel beachten, da der GraphBuilder das meiste von sich aus macht.
IGraphBuilder* pGraph; IMediaControl* pMediaControl; CoInitialize(NULL); CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER, IID_IGraphBuilder, (void**)&pGraph); pGraph->RenderFile(L"test.mp3", NULL); pGraph->QueryInterface(IID_IMediaControl, (void**)(&pMediaControl)); pMediaControl->Run();
Es gibt seit kurzem einen neuen, schlanken und schnelleren XML-Parser von Microsoft mit dem Namen XmlLite. Er ist in C++ geschrieben und bietet aber, im Gegensatz zu MSXML keine Validierung gegen ein DTD oder XML Schema. Eine kleine deutsche Einführung findet man im MSDN Magazin (Link: Ein kleiner und schneller XML-Parser für systemeigenes C++).
Dokumentation (MSDN): http://msdn2.microsoft.com/en-us/library/ms752872.aspx