C++ guys rock XML without becoming XML parser experts

So I've got C++ projects that are like 1 MB of code and I'm supposed to add this 30 MB Xerces C++ to it just to parse and create a snippet of XML? Are you kidding me?

Do I really have to study oodles of document object model documentation just to extract the text between a start tag and an end tag? Are you joking?

All the time I invest in a big bloated XML infrastructure will pay off? Are you in your right mind?

XML was SUPPOSED TO BE a simple clean portable data format!

If you look around the web, you'll find plenty of articles telling you how to avoid the pitfalls of XML... but they all want to teach you more technical concepts and layers of abstraction!

They are saying that in order to avoid getting caught in a rat's nest you must dive down into a different rat's nest first! How much help is that?

And half the time you go into a project or a requirement, you do not have control over the architecture. You can't impose some XML infrastructure on it!

Actually there are lighter and easier C++ XML tools than Xerces. But most all of them have a major design problem called "DOM." The document object model was created by academics, for academics.

The DOM is actually a brilliant read! Enjoy it, really! ;)

The fact is, the DOM was not designed by commercial programmers. DOM was created by University folks who could not create simple usable robust software if their life depended on it. Don't get me wrong. University folks play a very important role in the food chain of software, but they can screw it up royally too.

The DOM was not built for practical people who just want to get things done, and done right.

The amazing and sad thing is that developers start working for XML rather than it working for them. Tremendous amounts of time are wasted on designing, maintaining and deploying XML schemas: XML that describes XML! This, for a data format that was billed as "self-describing!"

XML takes on a life of its own in many software houses.

Show me examples of the XML itself. I don't want a complex meta-language, potentially out of step description of it! Show me the real stuff and I can figure out how to make it and get what I want out of it.

If you ask me what makes software simple and robust, I say one word: smallness -- keeping integration, configuration, objects, methods, and footprint to a minimum. And no dependencies! Why add requirements on top of those you already have?

Seriously, why should it take more than a minute to download and try a scrap of C++ XML parser code in your own C++ project?

Most parsers take a week or a month to master, which is a very expensive investment, especially if you didn't need that much of it.

And then if there is just one little problem, you've got this big lug of a "free" 3rd party tool to trouble shoot out there in the wild web of compliance with quasi-official standards that keep getting updated. A very expensive predicament.

That's thousands and thousands of dollars expensive.

You go out on the forums looking for others who've had the same problems with using the DOM object pointers and wonder if it would have been quicker to do the XML yourself instead of learning how to work with someone else's tree node linked lists.

You might even spend a lot of valuable time writing a wrapper around this tool to make it easier for your team. With all this time and effort sunk into it, you can never admit its true cost to yourself let alone your boss.

Well, hopefully that's not a reality for you. Or maybe it was a reality for you with another tool, not a C++ XML tool. I say this because I've got a small C++ XML product used by thousands of practical developers around the world. WinZip uses it for its XML parsing and creation, as do developers at Boeing, Adobe, Kodak, Texas Instruments, Motorola etc.

It is not rocket science. It has method names that seem a bit funny to me now like AddElem and SetAttrib.

But it is just one object with a bunch of methods that can do what I needed to do with XML in the past 11 years.

In 1999 I was frustrated looking for something to help parse and create some XML messages so I rolled my own C++ XML parser class called CMarkup. Other developers found it useful. In 2001 I posted it to CodeProject and it was article of the week.

Here is how it works: you use one C++ class representing an XML document. You use the class to extract, modify and generate XML (and HTML too).

Because it doesn't have DOM objects under the covers, CMarkup handles large XML faster and with a smaller footprint than any other XML tool out there.

A customer reported CMarkup takes one third the memory footprint of TinyXML.

Download the source code of the evaluation version of CMarkup which is fully functional and includes everything that most customers initially want. It is free to compile in your non-commercial programs.

There are videos showing how to add it to a C++ project, and a fast start article, so you can be up and running quickly.

Do that first. Then if you want the full functionality developer version it is $249.

Download C++ XML parser CMarkup evaluation now

These are C++ guys and gals who got their XML done fast, not by becoming experts in everything XML, but by choosing an easier way:

comment posted Erich Finkelstein, USA

I have never touched XML and was able to start loading and manipulating XML documents within an hour

comment posted Paul Winwood, UK

makes simple XML access so very very easy

comment posted Thanh Ly, USA

a clean-cut, easy to understand and use, solution that works

comment posted Zack Menendez, USA

the exact solution I was looking for: fast, easy-to-use

comment posted Larry Wasserman, USA

making the generation of XML files almost trivial.

comment posted David Ching, USA

the absolute best combination for ease-of-use, embedability, and best supported XML parser out there

comment posted Patrick McMichael, USA

removing all that Xerces CRAP overhead, the app ran, no joke, 10 times faster!

comment posted Jeff Anderson, USA

the design and ease of use - it's a really different paradigm compared to other XML libraries - kudos to the *thinking* that went into this

comment posted Shane Tolmie, New Zealand

phenomenally easy to use, has an incredibly quick parser, and good documentation

comment posted Marcos del Puerto, Brazil

the fastest and it has been tested and improved for a long time

comment posted Kenneth Robinette, USA

it works out of the box. Saved us a lot of time

comment posted Brett Kapilik, Canada

fast, easy to use and very tight

comment posted Reto Bucher, Switzerland

solved thousands of problems

comment posted Patrik Tesar, Slovak Republic

saves my life

comment posted Andrew Smith, USA

By far the best support I've had with any programming support

comment posted Michael Sturtevant, USA

exceptionally easy to use and very efficient

comment posted Patricia Rose, USA

the best money I've ever spent for a development tool

comment posted Jerry, USA

Immensely useful and elegant

comment posted Marcelo DaSilva, USA

great XML APIs & great support

comment posted Doug Robison, USA

a trouble free piece of code

comment posted Todd Brooks, USA

Absolutely the best C++ library I have used in YEARS. It is fast, and extremely easy to use, not to mention it has no dependencies and we get the source! All for an extremely low price.

comment posted Ayhan √úretmen, Germany

by far the best XML-Parser on the Internet

comment posted Scott Wilson, USA

I wish all library developers were as responsive as you

comment posted Juan Carlos Cobas, Spain

saved me a lot of work

comment posted Nikolay Sokratov, USA

It's a pleasure to work with companies which actually care about customers after they sell their product

Download the free source code evaluation and follow the Quick Start instructions to add it into your project in no time. Try C++ XML parser CMarkup.