Using Perl With WDDX - Packet Sniffer (
Page 3 of 8 )
All WDDX "packets" are constructed in a standard format.
The root, or document, element for WDDX data is always the <wddxPacket> element, which marks the beginning and end of a WDDX block.
<wddxPacket version='1.0'>
This is immediately followed by a header containing comments,
<header>
<comment>This packet was generated on stardate 56937, constellation
Omega </comment> </header>
and a data area containing WDDX data structures.
<data>
...
</data>
</wddxPacket>
In order to perform its magic, WDDX defines a set of base data types that correspond to the data types available in most programming languages. Here's a list, with examples - pay attention, because you'll be seeing a lot of these in the next few pages:
Strings, represented by the element <string> - for example
<wddxPacket version='1.0'>
<header/>
<data>
<string>Robin Hood</string>
</data>
</wddxPacket>
Numbers, represented by the element <number> - for example
<wddxPacket version='1.0'>
<header/>
<data>
<number>5</number>
</data>
</wddxPacket>
Boolean values, represented by the element <boolean> - for example
<wddxPacket version='1.0'>
<header/>
<data>
<boolean value='true'/>
</data>
</wddxPacket>
Timestamps, represented by the element <dateTime> - for example
<wddxPacket version='1.0'>
<header/>
<data>
<dateTime>2002-06-08T16:48:23</dateTime>
</data>
</wddxPacket
Arrays and hashes, represented by the elements <array> and <struct> respectively - for example
<wddxPacket version='1.0'>
<header/>
<data>
<array length='3'>
<string>red</string>
<string>blue</string>
<string>green</string>
</array>
</data>
</wddxPacket>
Tabular data, represented by the element <recordset> - for example
<wddxPacket version='1.0'>
<header/>
<data>
<recordset rowCount='3' fieldNames='ID,NAME'>
<field name='ID'>
<number>1</number>
<number>2</number>
<number>3</number>
</field>
<field name='NAME'>
<string>John</string>
<string>Joe</string>
<string>Mary</string>
</field>
</recordset>
</data>
</wddxPacket>
Base64-encoded binary data, represented by the element <binary> - for example
<wddxPacket version='1.0'>
<header/>
<data>
<binary length='24'>VGhpcyBpcyBzb21lIGJpbmFyeSBkYXRh</binary>
</data>
</wddxPacket>
The process of converting a data structure into WDDX is referred to as "serialization". The process of decoding a WDDX packet into a usable form is, obviously, "deserialization". The serializer/deserializer component is usually built into the programming language - as you will see on the next page, when I introduce Perl into the equation.