CMarkup is the easiest way to add reliable lightweight XML functionality to your C++ program. Although Microsoft MSXML has additional capabilities, there are three main reasons to use CMarkup instead of Microsoft MSXML. Note that although this article discusses disadvantages of MSXML, the CMarkup product is also a quick way to use MSXML via the MSXML Wrapper CMarkupMSXML if you require MSXML.

Ease of use: CMarkup complies with EDOM, the key to simple XML processing. EDOM is an easy and concise set of XML methods for parsing, creating and modifying XML documents. MSXML is based on DOM which is a large and complex specification with at least 15 types of objects and numerous interfaces (see EDOM vs DOM and Alternatives). With MSXML in C++ you have to learn the XML SDK, which means you have to figure out if you have it, find it download it and install it (you may need to update the service pack of your Visual Studio!), and sort through documentation and examples just to get to step 1. With EDOM, you have only one type of object and you'll be doing XML in no time.

Distribution: MSXML is generally available on Windows machines since Windows 98/2000, and is installed by Microsoft applications such as IE 5.0. However, for some applications you may be concerned about making sure the service exists on customer machines or else distribute MSXML with your product (Microsoft does provide help with redistributing MSXML). MSXML is great when its working, but there are a number of versions out there and many of them are "beta". CMarkup comes with source code so it is compiled into your program and there are no worries.

Overhead/Availability: Although recent versions of MSXML are very efficient and fast, it is still a heavyweight. It is a COM component, so there are registration requirements and overhead in the interfacing. With CMarkup, you have complete control and there are no requirements or overhead to surprise you. CMarkup proved extremely handy inside an Oracle external procedure where COM was not viable. Also, to my knowledge, MSXML is not available on handhelds.