FLEX XMLDecoder turns "09.00" into "09.00", but "10.00" - 10

Can someone explain why the FLEX 4.5 XML decoder does this with my XML data?

var decoder:XMLDecoder = new XMLDecoder;
var $object:Object = decoder.decode( <xmltag>08.00</xmltag> );
// object = "08.00"

var decoder:XMLDecoder = new XMLDecoder;
var $object:Object = decoder.decode( <xmltag>11.00</xmltag> );
// Object = "11" (HEY! Where did my '.00' part of the string go?)

var decoder:XMLDecoder = new XMLDecoder;
var $object:Object = decoder.decode( <xmltag>11.30</xmltag> );
// Object = "11.3" (HEY! Where did my '0' part of the string go?)
+3
source share
2 answers

The Flex deserializer also gave me problems with this. It can interpret them as Number objects, and thus they return short representations when toString () is called.

Try using .toFixed(2)when you need to print a value like11.00

var $object:Object = decoder.decode( <xmltag>11.00</xmltag> );
trace($object); //11
trace($object.toFixed(2)); //11.00
+1
source

So, to answer the original question about why this happens:

SimpleXMLDecoder (, , XMLDecoder), simpleType():

//return the value as a string, a boolean or a number.
//numbers that start with 0 are left as strings
//bForceObject removed since we'll take care of converting to a String or Number object later

, 0, . , , .

, - -

  • "0.800":
  • 11: int
  • 11.3: Number
+1

All Articles