Need your C++ code to read and write XML data?
Use Codalogic's LMX C++ XML data binder to go from XML like:
<Name>Codalogic LMX</Name>
to C++ like:
std::cout << myObject.GetName() << "\n";
Speed up development, reduce bugs, ship earlier...
Codalogic LMX generates strongly typed application specific C++ classes
from an XML XSD Schema or an
example of your XML data
that describes the structure of your XML data.
Codalogic LMX makes it easy to store application data, and user preferences in XML format.
It also allows you to robustly exchange proprietary and standards-based XML data with remote servers and systems.
Download a fully functional trial to find out more...
The Codalogic LMX XML to C++ Workflow
Click on the image below to walk through the Codalogic LMX workflow:
Business Benefits
- Speed up development
- Automate the generation of code that would otherwise be generated manually saving you time
and money
- Reduce bugs
- Automation and compile-time error checking reduce the potential for introducing manual coding errors
improving the quality of your product
- Make a better product
- Reassign developer resources to adding extra customer pleasing features rather than doing
low-level, low-ROI coding
- Reduce training requirements
- Developers can access your XML data using regular C++ and don't need to understand
specialist XML technologies
- Ship earlier
- Get revenue from your product sooner and get real end-customer input enabling earlier iterations
- Royalty free
- Ship your application to as many customers as you like without additional license fees
Developer Benefits
- Easy to use
- The output is regular C++ so there is no need to learn additional libraries and complex XML DOM / XPath syntax.
- A minimal number of binary or C++ source files are required making LMX simple to build into your project.
This saves you time managing builds and has less chance of build errors.
- Easy coding
- No programming of tedious state code as required with SAX (and StAX).
This saves you doing boring repetitive C++ programming tasks, and leaves you free to do more interesting tasks.
- Application specific documentation is included in the generated C++ .h file. This speeds up code development
because you can copy key constants and method names into your code.
- The View Prototypes mode in the Win32 WinLMX GUI version allows drag-and-drop of method names and key constants
directly into your code, allowing you to write code at lightening speed!
- Generates cross-linked HTML documention for the generated code making it easy to find the information you
need to write code.
- Your IDE can understand the generated C++ code allowing you to use IntelliSense and other similar
code completion technology to speed up code development.
- First class support. If you have questions, just
.
We want you to succeed.
- Less time chasing bugs
- The names of methods and variables are checked at C++ compile-time rather than run-time meaning simple
typos in names are detected automatically and early reducing the chance of bugs lurking in
your deployed code.
- Resource management (such as memory) is handled by the generated code so there is less chance for
accidental C++ memory leaks etc.
- Customizable
- You can add custom C++ code and behaviors to the generated C++ classes using Snippets and Snippet Event Handlers.
This gives you in-depth flexibility to handle your XML and tailor the generated C++ classes to your needs.
- The C++ types used to represent the simple XML data types can be configured using C++ language syntax.
This allows you to use your own C++ data types for more seamless integration with the
rest of your C++ code and there is no need to learn complex code generator configuration options.
It also means there is less chance of introducing accidental differences between builds by using the
wrong configuration.
- It's easy to switch between wide C++ character strings and 'narrow' C++ character strings so
you can choose your preferred way of handling XML characters at the C++ level.
- Customize the generated method names to suit your coding convention, including converting names to and from
CamelCase and/or underscore_separated.
- When your software writes data to the generated C++ classes you can optionally enable or disable
validation of the written data against the type expected by the XML schema. This allows you to
trade off between testing in debug mode and performance in release mode by using a simple compiler switch.
- Dependable
- Hard exception-safe design.
- Continuously developed and improved for more than 8 years.
- Extensively tested. Release regression tests take 2 days to run. Wide customer base ensures diverse
'real-world' testing.
- Portable
- The C++ source code for the Supporting Software is available allowing your product to run on
any C++ compliant platform. You can even build and test on one platform and run on another,
which is helpful when developing embedded solutions.
- Binaries are supplied for VS 2012, VS 2010, VS 2008, VS 2005, VS 2003, VC++ 6, GCC 4.7.0, GCC 4.4.1,
GCC 4.3.3, GCC 4.1.0, GCC 3.4.6, GCC 3.2.3, plus 64-bit versions.
- In addition to Windows and Linux, customers have also used LMX on HP-UX, Apple, ARM, X-Scale, IBM AIX and others.
Providing exceptional support is very important to us. If you have questions about Codalogic LMX XML C++ Databinder,
please send a message to
.
Easy Coding
If you have the following basic XML stored in a file:
<Product>
<Company>Codalogic</Company>
<Name>LMX</Name>
<HowMany>10</HowMany>
</Product>
You can easily read, modify and write the XML using the following simple C++ code:
#include <iostream>
#include "example.h" // Generated by Codalogic LMX from above XML
int main()
{
lmx::elmx_error error;
Product myProduct( "my-file-in.xml", &error ); // Read the XML file into a C++ object
if( error == lmx::ELMX_OK ) { // Check reading the XML was OK
std::cout << "Company: " << myProduct.GetCompany() << "\n";
myProduct.SetHowMany( myProduct.GetHowMany() - 1 ); // Change a value
myProduct.Marshal( "my-file-out.xml" ); // Write out the object to XML
}
}
Note that HowMany is stored as an integer so you can easily modify it using
native C++ operations.
You can easily configure whether method names are CamelCase or underscore_separated,
strings are stored as std::string or std::wstring, you use error codes or exceptions,
and much more. You can also read and write the XML from/to a std::string or a memory
buffer.
Testimonials
World leading companies that rely on LMX's XSD
C++ XML data binding capabilities include:
Boeing,
Lockheed Martin,
General Dynamics,
BAE Systems,
Northrop Grumman,
QinetiQ,
Federal Aviation Administration (FAA),
Rolls Royce,
Hewlett Packard,
Alcatel,
Avaya,
Samsung,
Cisco,
Freescale Semiconductor,
Seagate,
TANDBERG,
Thomson,
Barclays Capital,
Nomura,
Schlumberger,
ABB Power Technologies,
Union Pacific Railroad,
CSX Railroad,
... and more
Of particular satisfaction to us is that we have a high percentage of repeat customers.
Here are some of the testimonials our customers have submitted about LMX XSD C++ XML data binding:
"I really like LMX. I can finish my tasks faster and it makes things
much easier, especially with such a complete documentation." - Haryono Dianto, Barco Inc.
"Easily the best (most accurate) XML data binding of the tools I've used. And they have the best support I've received from ANY vendor for any tool. Would highly recommend to anybody that needs this ability."
"LMX is a professionally developed product with many great features. The support from Codalogic is the best I've seen and I've been using vendor products for 30 years. " - Nick Godbey, SITA
"[LMX] is much more faster and easier in use than our previous solution" - Stanisław Wierchoła, Gadu-Gadu
"LMX is a really good product; fits right in with what we need to do." - Jeff Hay, HYTEC Inc - (Using Multiple Architectures)
"Thanks for your exceptional service, as always!" - Dave Webb, TENET Technology
"LMX is working like a charm" - 3DCONNEXION - (Using Apple/Mac)
"Our experience has been very positive (especially when compared to using the [ed. other product] code generation)." -
ASPECTUSVI
"Your documentation is much clearer than other products I looked at." - British Telecom
"The supporting code compiled on Itanium without problems" - CeBeNetwork GmbH - (Running on HP-UX)
"LMX comes with very complete documentation." - Ronald Bourret's XML Data Binding Resources
"Its a pretty handy tool, and exceptionally small in size!!!" - SPAN Systems - (Using ARM/X-Scale Architecture)
"Thanks for the rapid response, as usual." - University of Teesside School of Health & Social Care
Note that you can also access these pages using the convenience URL
http://www.xml2cpp.com.