flex入门(四)---------常用对象xml、Date

Xml对象:
    XML是一种简单的数据存储语言,使用一系列简单的标记描述数据。
        
    1.使用XML类的构造函数创建XML对象

    使用XML类创建XML对象的语法格式如下:

        var 变量名:XML= new XML(value);

        其中,参数value为可以通过XML()全局函数转换为XML对象的任意对象。
        例如:
        
        var value:String= "<student><name>王林</name><sex>男</sex><age>20</age> </student>";
        var valueXML:XML=new XML(value);
        trace(valueXML.toXMLString());                        
        trace(valueXML.name);                            //输出王林



    2.使用XML文本创建XML对象
        使用这种方法的优点是,程序在编译时会自动忽略文本中的空白字符,所以在定义XML对象时,XML文本的换行符和制表符等空白字符对程序都没有影响,
        
        例如,以下语句使用XML文本创建了一个XML对象:
            var stu:XML= <student>
                <name>王林</name>
                <sex>男</sex>
                <age>20</age>
                </student>;
            trace(stu.toXMLString());



    向XML对象添加新元素的方法有四种,即使用点运算符“.”和“[ ]”操作符添加元素;使用XML类的insertChildBefore()和insertChildAfter()方法添加元素。
        (1)使用“.”添加元素。
            使用点运算符添加元素是最常用的添加元素的方法,语法格式如下:
            XML对象.新元素名=元素内容;
            例如:
            var stu:XML=<student></student>;
            stu.name= "王林";
            trace(stu.toXMLString());

        (2)使用“[ ]”添加元素。
            如果新增加的元素名是由变量动态指定的,则不能直接使用点运算符完成添加,这时可以使用“[ ]”操作符添加元素,语法格式如下:
            XML对象[变量名]=内容;


        (3)使用insertChildBefore()方法和insertChildAfter()方法添加元素。
            XML对象提供了两个非常常用的方法添加元素,即insertChildBefore()方法和insertChildAfter()方法,
            这两个方法都是以当前元素为基础进行元素的添加。
            
            语法格式如下:
                insertChildBefore(XML元素, 新元素);
                insertChildAfter(XML元素, 新元素);

        
        insertChildBefore()方法是在某个XML元素的前面插入新元素,而insertChildAfter()方法则是在某个XML元素的后面插入新元素。
        例如:
            var bookXML:XML =
                <books>
                      <book>
                            <name>Flex 教程</name>
                            <author>张三</author>
                      </book>
                      <book>
                            <name>Eclipse 教程</name>
                            <author>李四</author>
                      </book>
                
                </books>;
            //在第一个<book>节点前添加元素
            bookXML.insertChildBefore(bookXML.book[0],<book><name>C# 教程</name></book>);
            //在添加元素后的第一个<book>节点后添加元素
            bookXML.insertChildAfter(bookXML.book[0],<book><name>Struts教程</name></book>);
            trace(bookXML);


        

        2.添加属性
            需要使用“@”或“[ ]”操作符为XML对象的XML节点里添加属性。
            (1)使用“@”操作符添加属性。
            一般要表示属性时,在属性名前面加“@”符号。如果要为XML对象中的某个元素添加属性和值,则使用点运算符和“@”操作符共同实现。语法格式如下:
            XML对象.元素名.@属性名=值;
            (2)使用“[ ]”操作符添加属性。
            与添加元素一样,如果属性名是由变量动态指定的,则需要使用“[ ]”操作符添加属性。语法格式如下:
            XML对象.元素名.@[属性名]=值;





        3.读取元素和属性
            读取节点元素内容和属性值,可以使用“.”运算符和“@”操作符完成。例如:
            var bookXML:XML =
                    <book>
                        <name>Flex 教程</name>
                        <author age="25">张三</author>
                        <time>2008年7月</time>
                    </book>;
            trace(bookXML.name);                //输出结果:Flex教程
            trace(bookXML.author.@age);            //输出结果:25
            使用“*”代替属性名,表示读取所有的属性值。例如:
            trace(bookXML.author.@*);    


        4.删除元素和属性
            删除XML中的元素和属性时使用delete语句,语法格式如下:
            delete XML对象.元素名;
            delete XML对象.元素名.@属性名;
            例如:
            var bookXML:XML =
                    <book>
                        <name>Flex 教程</name>
                        <author age="25">张三</author>
                        <time>2008年7月</time>
                    </book>;
            delete bookXML.name;
            delete bookXML.author.@age;
            trace(bookXML);



    XMLList类的用法如下例所示:
        var bookXML:XML =
               <books>
                  <book>
                    <name>Flex 教程</name>
                    <author sex="男">张三</author>
                    <time>2008年7月</time>
                  </book>
                  <book>
                    <name>Eclipse 教程</name>
                    <author>李四</author>
                    <time>2009年2月</time>
                  </book>
                </books>;
        //获得XMLList对象
        var bookList:XMLList = bookXML.elements();
        //循环遍历XMLList对象
        for each(var xmlData:XML in bookList)
        {    
            //获得每一个book对象的name节点内容
            trace(xmlData.name);
        }


        XMLListCollection类也不是核心类,所以在使用XMLListCollection类之前首先要使用import语句引入该类,
        
        如下所示:
        import mx.collections.XMLListCollection;
        创建XMLListCollection对象的语法格式如下:
        var 变量名:XMLListCollection = new XMLListCollection(XMLList对象);
        创建对象后,使用XMLListCollection类的addItem()方法在XML列表的尾部增加节点;使用addItemAt()方法在XML列表的指定索引处增加节点,
        
        语法格式如下:
        XMLListCollection对象.addItem(节点);
        XMLListCollection对象.addItemAt(节点,索引);








============================================================================================================================================================================================================

Date对象:

    根据参数的不同,创建Date对象的情况分为以下四种。
        
        1.未给定参数
            如果创建Date对象时Date()构造函数没有指定参数,则按照所在时区的本地时间,返回包含当前日期和时间的Date对象。语法格式如下:
            var 变量名:Date = new Date();
            例如:
            var now:Date=new Date();
            trace(now.toString());        //返回当前时间 格式是世界时间的格式    
        
        2.给定一个数字参数
            如果仅给定了一个数字参数,则Date()构造函数将其视为自GMT时间1970年1月1日以来经过的毫秒数,并且返回对应的Date对象。语法格式如下:
            var 变量名:Date = new Date(val);
            例如,创建一个设置为1970年1月1日过完一天的日期和时间对象:
            var val:int=1000*60*60*24
            var startTime:Date=new Date(var);
            trace(startTime);     //输出结果:Fri Jan 2 08:00:00 GMT+0800 1970




        3.给定一个字符串参数
            如果给定一个字符串参数,则Date()构造函数将尝试将字符串解析为日期和时间两个部分,然后返回对应的Date对象。语法格式如下:
            var 变量名:Date = new Date(str);
            字符串参数str必须包含一个有效日期,否则将解析错误。日期可以有多种格式,但必须至少包括月、日和年。例如,“Feb 1 2005”是有效的,
            而“Feb 2005”则是无效的。

            (此种方法基本不用,因为和常用的中国时间格式不同。)
        
        4.给定多个数字参数
            如果给定多个数字参数,则Date()构造函数将这些参数分别视为年、月、日、小时、分钟、秒和毫秒,并返回一个对应的Date对象。
            语法格式如下:
                var 变量名:Date = new Date(year, month, date, hour, minute, second, millisecond);



    date对象的属性:
        1.读取Date类的属性
            Date类主要包含以下几个属性用于存储日期和时间中特定的值。
            (1)fullYear和本地fullYearUTC属性。fullYear属性按照时间返回Date对象中的完整年份值。
                 fullYearUTC属性则按照通用时间(UTC)返回Date对象中的四位数年份值。
            
            (2)month和monthUTC属性。month和monthUTC属性分别按照本地时间和UTC时间返回Date对象的月份值
            
            (3)date和dateUTC属性。date和dateUTC属性分别按照本地时间和UTC时间返回Date对象指定的月中某天的值。
            
            (4)day和dayUTC属性。返回Date对象所指定的星期值。
            
            (5)hours、minutes、seconds、milliseconds,以及hoursUTC、minutesUTC、secondsUTC、millisecondsUTC。
                 这些属性返回Date对象指定的小时、分钟、秒和毫秒的值。
            
            (6)time属性。按照UTC返回Date对象中自1970年1月1日午夜以来的毫秒数。
            
            (7)timezoneOffset属性。返回计算机的本地时间和通用时间(UTC)之间的差值(以分钟为单位)。



            这些属性全部对应有相对的get和set方法,如果需要设置 调用即可,查看相应的api


            而在时间格式化的时候调用DateFormatter类即可

            例:
                var date:Date = new Date();

                var datefor: DateFormatter = new DateFormatter;

                datefor.formatString = "YYYY MM DD";

                dateStr = datefor.format(date);

                Alert.show(dateStr);
                

        
            上面的代码就实现了dete格式化,将当前时间转换成了 年份  月份  日期的形式排列出来,转换时不用在意中间是空格 还是- 这些全部可以
            自定义,核心的参照api  YYYY年份 MMM月份  DD天数  JJ小时(23小时制) NN 分钟  SS秒


            还有一个常用的工具类是DateFormatter的静态方法 ,可以将字符串转换为date对象,相对较常用。

            DateFormatter.parseDateString(String)

            需要注意的是该方法转换时,参数字符串需要符合一定的规则,否则会转换失败。
                ::已设置为 String 格式的日期转换为 Date 对象。月份名称和日期名称必须符合 mx.formatters.DateBase 中的名称。
                    String 的小时值必须介于 0 和 23(含)之间。分钟和秒的值必须介于 0 和 59(含)之间。以下示例使用此方法创建 Date 对象。





Flex入门 -----------数据验证

    Flex 4中内建的数据验证组件主要包括NumberValidator(数字验证)、CurrencyValidator(货币验证)、PhoneNumberValidator(电话号码验证)、
    StringValidator(字符串验证)、ZipCodeValidator(邮政编码验证)、CreditCardValidator(信用卡验证)、DateValidator(日期验证)、
    EmailValidator(电子邮件验证)和RegExpValidator(正则表达式验证)等。

    Validator类实现的功能是使验证程序生成必填字段。
    Validator类的常用属性和事件如下所示。
        (1)enabled
        (2)source
        (3)property
        (4)required
        (5)requiredFieldError
        (6)trigger
        (7)triggerEvent
    
    NumberValidator组件主要用于检验字符串是否为有效数字,除此之外还可以验证是否为整数,以及验证是否为给定范围内的数等。
    NumberValidator组件除了继承Validator类的属性以外,还有如下一些常用属性。
    
    (1)allowNegative
    (2)maxValue
    (3)minValue
    (4)domain   要验证的数字类型。允许的值为 "real" 和 "int"。
    (5)precision
    (6)decimalSeparator
    (7)thousandsSeparator
    (8)negativeError
    (9)exceedsMaxError
    (10)lowerThanMinError
    (11)integerError
    (12)precisionError
    (13)separationError
    (14)decimalPointCountError
    (15)invalidCharError
    (16)invalidFormatCharsError
    (17)source   要验证的input标签的id
    (18)property 要验证的标签内容,通常为text

    范例:
        <mx:Script>
        <![CDATA[
            import mx.controls.Alert;
            import mx.events.ValidationResultEvent;
            
            private function numberValidator_invalid(evt:ValidationResultEvent):void {
                Alert.show(evt.message);
            }
            
            private function numberValidator_valid(evt:ValidationResultEvent):void {
                Alert.show(evt.type);
            }
        ]]>
    </mx:Script>
    
    <mx:NumberValidator id="numberValidator"
                        domain="{comboBox.selectedItem}"
                        source="{textInput}"
                        property="text"
                        trigger="{button}"
                        triggerEvent="click"
                        invalid="numberValidator_invalid(event);"
                        valid="numberValidator_valid(event);" />
    
    <mx:ApplicationControlBar dock="true">
        <mx:Form styleName="plain">
            <mx:FormItem label="domain:">
                <mx:ComboBox id="comboBox"
                             dataProvider="[real,int]" />
            </mx:FormItem>
        </mx:Form>
    </mx:ApplicationControlBar>
    
    <mx:Form defaultButton="{button}">
        <mx:FormItem direction="horizontal">
            <mx:TextInput id="textInput"
                          restrict="0-9.-"
                          maxChars="10" />
            <mx:Button id="button"
                       label="validate" />
        </mx:FormItem>
    </mx:Form>

    NumberValidator组件使用<mx:NumberValidator>标签定义,NumberValidator组件是非可视化组件,需要被包含在<fx:Declarations>标签中。


********上例只是举个例子,需要注意的是在textInput标签中的restrict也是用于表单验证的,直接可以匹配正则表达式,常用.


其他验证还有 电话验证 邮箱验证等等 原理相同不一一介绍了。




而与验证对应的,还有很多响应的数字格式化及date格式化等等组件。详情查看api即可。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值