| Attributes to customize XML serialization / Customizing XML serialization | |
Map a BDL Record to an XML Schema choice structure. The choice of the record's member is performed at runtime, and changes dynamically according to a mandatory member. This specific member must be of type SMALLINT or INTEGER, and have an XMLSelector attribute set. The XMLChoice attribute also supports a "nested" value that removes the surrounding XML tag.
DEFINE mychoice RECORD ATTRIBUTES(XMLChoice,XMLName="Root") val1 INTEGER ATTRIBUTES(XMLName="Val1"), val2 FLOAT ATTRIBUTES(XMLAttribute,XMLName="Val2"), sel SMALLINT ATTRIBUTES(XMLSelector), val3 STRING ATTRIBUTES(XMLName="Val3") END RECORD
Case where "sel" value is 4
<Root Val2="25.8"> <Val3>Hello world</Val3> </Root>
Case where "sel" value is 1
<Root Val2="25.8"> <Val1>148</Val1> </Root>
Nested example:
DEFINE myVar RECORD ATTRIBUTES(XMLName="Root")
val1 INTEGER ATTRIBUTES(XMLName="Val1"),
val2 FLOAT ATTRIBUTES(XMLAttribute,XMLName="Val2"),
choice RECORD ATTRIBUTES(XMLChoice="nested")
choice1 INTEGER ATTRIBUTES(XMLName="ChoiceOne"),
choice2 FLOAT ATTRIBUTES(XMLName="ChoiceTwo"),
nestedSel SMALLINT ATTRIBUTES(XMLSelector)
END RECORD,
val3 STRING ATTRIBUTES(XMLName="Val3")
END RECORD
Case where "nestedSel" value is 1
<Root Val2="25.8"> <Val1>148</Val1> <ChoiceOne>6584</ChoiceOne> <Val3>Hello world</Val3> </Root>
Case where "nestedSel" value is 2
<Root Val2="25.8"> <Val1>148</Val1> <ChoiceTwo>85.8</ChoiceTwo> <Val3>Hello world</Val3> </Root>