1. How to use MSXML2 in C++?
First, we should import the "msxml6.tlb" file, the code as below:
#import "..\Common\msxml6.tlb" raw_interfaces_only exclude("ISchemaElement", "ISchemaAttribute")
Then we can use the MSXML2 interfaces now, take for an example:
CoInitialize(NULL); HRESULT hr = S_OK; MSXML2::IXMLDOMDocument2Ptr spDoc = NULL; hr = ::CoCreateInstance(__uuidof(MSXML2::DOMDocument60), NULL, CLSCTX_ALL, __uuidof(MSXML2::IXMLDOMDocument2), (void**)&spDoc); if(FAILED(hr) || NULL == spDoc) return -1; //.... sp->load(...); sp->get_sirstChild(...); sp->get_xml();
2. How to use XmlLite in C++?
MSDN Linker: http://msdn.microsoft.com/en-us/library/windows/desktop/ms752838(v=vs.85).aspx
HRESULT hr = S_OK; // Create reader. CComPtr<IXmlReader> spReader; hr = ::CreateXmlReader(__uuidof(IXmlReader), reinterpret_cast<void**>(&spReader), 0); if(FAILED(hr) || NULL == spReader) return; // Set input storage. CComPtr<IStream> spStream; hr = spReader->SetInput(spStream); if(FAILED(hr) || NULL == spStream) return; //spStream->Read // Enum node. XmlNodeType nodeType = XmlNodeType_None; while(S_OK == (hr = spReader->Read(&nodeType))) { UINT lineNum = 0; if(FAILED(spReader->GetLineNumber(&lineNum))) continue; } // Enum current node's attributes. for(hr = spReader->MoveToFirstAttribute(); S_OK == hr; hr = spReader->MoveToNextAttribute()) { LPCWSTR attValue; if(FAILED(spReader->GetValue(&attValue, NULL))) continue; }