The DefaultElementName Data Member
Each class generated by HydraExpress has a data member called DefaultElementName. This data member is an instance of rwsf::XmlName.
The DefaultElementName for a class is determined as follows:
*For top-level elements, the DefaultElementName is the element name.
If the top-level element name would result in a file that conflicts with another file name in the default namespace, HydraExpress renames it elementnameElement.
*For named complex types, the DefaultElementName is the complex type name.
*For anonymous complex types, the DefaultElementName is the name of the containing element.
The marshal() and unmarshal() methods for a class use the DefaultElementName by default. This allows you to simply call marshal() or unmarshal() on a class, usually with good results. For example, if the schema defines a top-level element named purchaseOrder, the following code usually works as expected:
 
PurchaseOrder po;
po.marshal();
This code should produce, as expected, an XML document with a top-level element <purchaseOrder>.
There is one case, however, where the default use of the DefaultElementName does not work as you might expect:
 
<element name="foo" type="bar"/>
<complexType name="bar">
...
</complexType>
In this case, if the following code were used:
 
Bar b;
b.marshal();
the result would be an XML document containing a top-level element called <bar>, when it would make better sense for the name of the element to be <foo>. To obtain this better result, the second line above would need to be:
 
b.marshal("foo","schema_target_namespace");