Flex【原创】Xml与Object互转/读写本地Xml文件

本文介绍了一个用于操作Xml文件的封装类,主要功能包括Xml与Object之间的转换、读写本地Xml文件等,适用于需要频繁处理Xml数据的应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  最近操作Xml文件比较多,因此封装了一下Xml文件操作类

  主要功能包括:   1.Xml 转 Object

          2.Object 转 Xml

          3.读取本地Xml(air)

          4.Xml写到本地(air)

  代码如下:

  

 

package 
{
    import flash.events.EventDispatcher;
    import flash.filesystem.File;
    import flash.filesystem.FileMode;
    import flash.filesystem.FileStream;
    import flash.system.System;
    import flash.xml.XMLDocument;
    import flash.xml.XMLNode;
    
    import mx.collections.ArrayCollection;
    import mx.rpc.xml.SimpleXMLDecoder;
    import mx.rpc.xml.SimpleXMLEncoder;
    
    import org.binyy.supermedia.app.utils.config.Config;

    /**
     *Xml Manager 
     * */
    public class XmlManager extends EventDispatcher
    {
        
        private static const XMLHEAD:String = '<?xml version="1.0" encoding="utf-8"?>';
        
        public function XmlManager()
        {
            throw new Error("Don't init static class");
        }
        
        /**
         * update xml data
         * @param data
         * @param path
         * */
        public static function updateXmlItem(data:ArrayCollection,path:String):void
        {
            var xml:XML = objectToXML(Util.sortItemIndex(data).source);
            writeXmlFile(xml,path);
            if(xml)
                System.disposeXML(xml);
            if(data)
                data = null;
        }
        
        /**
         * remove xml data
         * @param data
         * @param path
         * */
        public static function removeXmlItem(data:ArrayCollection,path:String):void
        {
            for(var i:int = data.length -1 ; i >= 0 ; i--)
            {
                if(data.getItemAt(i).selected)
                {
                    data.removeItemAt(i);
                }
            }
            var xml:XML = objectToXML(Util.sortItemIndex(data).source);
            writeXmlFile(xml,path);
            if(xml)
                System.disposeXML(xml);
            if(data)
                data = null;
        }
        
        /**
         * Object to Xml
         * @param obj
         * 
         * @return XML
         * */
        public static function objectToXML(obj:Object):XML                 
        {                         
            var xmlDocument:XMLDocument = new XMLDocument();   
            var xmlNode:XMLNode = (new SimpleXMLEncoder(xmlDocument)).encodeValue(obj, new QName("root"), xmlDocument);          
            var xml:XML = new XML(xmlDocument.toString());                         
            return xml;                
        } 
        
        /**
         * Xml to Object
         * @param xml
         * 
         * @return Object
         * */
        public static function XMLToObject(xml:XML):Object
        {
            var xmlDocument:XMLDocument = new XMLDocument(xml);
            var resultObj:Object = (new SimpleXMLDecoder()).decodeXML(xmlDocument);
            return resultObj;
        }
        
        /**
         * read Local xml file
         * @param path
         * 
         * @return XML
         * */
        public static function readXmlFile(path:String):XML
        {
            var file:File = File.applicationDirectory.resolvePath(path); 
//            trace("read : " + file.nativePath);
            var fileStream:FileStream = new FileStream(); 
            fileStream.open(file, FileMode.READ); 
            var xml:XML = XML(fileStream.readUTFBytes(fileStream.bytesAvailable)); 
            fileStream.close();
            return xml;
        }
        
        /**
         * write Local  xml file
         * @param xml XML file
         * @param path
         * */
        public static function writeXmlFile(xml:XML,path:String):void
        {
            var file:File = new File(File.applicationDirectory.resolvePath(path).nativePath);
            //            trace("write : " + file.nativePath);
            var fileStream:FileStream = new FileStream(); 
            fileStream.open(file, FileMode.WRITE); 
            var outputString:String = XMLHEAD; 
            outputString += xml.toXMLString(); 
            fileStream.writeUTFBytes(outputString); 
            fileStream.close();
        }
        
    }
}

 

 

转载于:https://www.cnblogs.com/loveFlex/archive/2012/07/13/2589664.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值