Complex Types
HydraExpress creates a C++ class for each complex type. The structure of the classes created follows a few simple rules.
The generated components represent each complex type as a class. The name of the class is the same as the name of the type, except that the first letter of the name is always uppercase. The class provides accessors for elements and attributes within the complex type.
The accessors take or return the type of the element or attribute. Simple type elements that can occur only once (
maxOccurs=1) follow the mapping in
“Simple Type Mappings” , as do attributes, which must be simple types and can only occur once. Simple type elements that can occur more than once are instances of
std::vector instantiated on the C++ type of the element. If the element is itself a complex type, its type is another generated C++ class.
Usually, top-level elements of the XML Schema that define complex types are also represented as a class. These are convenience classes whose sole purpose is to allow the top-level element to be marshaled and unmarshaled more easily. HydraExpress supports an option to suppress these classes for XML Schemas that define a lot of them, in which case marshaling and unmarshaling is done directly through the corresponding type class. See “Working Without Top-Level Element Classes,” in the HydraExpress XML Binding Development Guide.
The code generated by HydraExpress provides a straightforward C++ interface for manipulating the data being exchanged by the service. See the HydraExpress XML Binding Development Guide for details on the interface.