如何解决FLEX XMLDecoder将“ 09.00”变为“ 09.00”,而将“ 10.00”变为10
|| 有人可以解释为什么FLEX 4.5 XMLDecoder对我的XML数据这样做吗?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?)
解决方法
Flex解串器也给我带来了问题。可能将它们解释为Number对象,因此在调用toString()时它们将返回简短表示形式。
每当需要打印
11.00
之类的值时,尝试使用.toFixed(2)
var $object:Object = decoder.decode( <xmltag>11.00</xmltag> );
trace($object); //11
trace($object.toFixed(2)); //11.00
, 因此,要回答为什么会这样的原始问题:
在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:数字
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。