zoukankan      html  css  js  c++  java
  • Flex【原创】Xml与Object互转/读写本地Xml文件

      最近操作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();
            }
            
        }
    }
  • 相关阅读:
    leetcode 155. Min Stack 、232. Implement Queue using Stacks 、225. Implement Stack using Queues
    leetcode 557. Reverse Words in a String III 、151. Reverse Words in a String
    leetcode 153. Find Minimum in Rotated Sorted Array 、154. Find Minimum in Rotated Sorted Array II 、33. Search in Rotated Sorted Array 、81. Search in Rotated Sorted Array II 、704. Binary Search
    leetcode 344. Reverse String 、541. Reverse String II 、796. Rotate String
    leetcode 162. Find Peak Element
    leetcode 88. Merge Sorted Array
    leetcode 74. Search a 2D Matrix 、240. Search a 2D Matrix II
    Android的API版本和名称对应关系
    spring 定时任务执行两次解决办法
    解析字符串为泛型的方法
  • 原文地址:https://www.cnblogs.com/loveFlex/p/2589664.html
Copyright © 2011-2022 走看看