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.
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:
I have never touched XML and was able to start loading and manipulating XML documents within an hour
Paul Winwood, UK
makes simple XML access so very very easy
Thanh Ly, USA
a clean-cut, easy to understand and use, solution that works
Zack Menendez, USA
the exact solution I was looking for: fast, easy-to-use
Larry Wasserman, USA
making the generation of XML files almost trivial.
David Ching, USA
the absolute best combination for ease-of-use, embedability, and best supported XML parser out there
Patrick McMichael, USA
removing all that Xerces CRAP overhead, the app ran, no joke, 10 times faster!
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
Shane Tolmie, New Zealand
phenomenally easy to use, has an incredibly quick parser, and good documentation
Marcos del Puerto, Brazil
the fastest and it has been tested and improved for a long time
Kenneth Robinette, USA
it works out of the box. Saved us a lot of time
Brett Kapilik, Canada
fast, easy to use and very tight
Reto Bucher, Switzerland
solved thousands of problems
Patrik Tesar, Slovak Republic
saves my life
Andrew Smith, USA
By far the best support I've had with any programming support
Michael Sturtevant, USA
exceptionally easy to use and very efficient
Patricia Rose, USA
the best money I've ever spent for a development tool
Jerry, USA
Immensely useful and elegant
Marcelo DaSilva, USA
great XML APIs & great support
Doug Robison, USA
a trouble free piece of code
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.
Ayhan Üretmen, Germany
by far the best XML-Parser on the Internet
Scott Wilson, USA
I wish all library developers were as responsive as you
Juan Carlos Cobas, Spain
saved me a lot of work
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.
Erich Finkelstein, USA