zoukankan      html  css  js  c++  java
  • JS读取XML

    01.import System;   
    02.import System.Collections;   
    03.import System.Xml;   
    04.import System.Xml.Serialization;   
    05.import System.IO;   
    06.import System.Text;   
    07.// Anything we want to store in the XML file, we define it here   
    08.class DemoData   
    09.{   
    10.    var x : float;   
    11.    var y : float;   
    12.    var z : float;   
    13.    var name : String;   
    14.}   
    15.// UserData is our custom class that holds our defined objects we want to store in XML format   
    16. class UserData   
    17. {   
    18.    // We have to define a default instance of the structure   
    19.   public var _iUser : DemoData = new DemoData();   
    20.    // Default constructor doesn't really do anything at the moment   
    21.   function UserData() { }   
    22.}   
    23.//public class GameSaveLoad: MonoBehaviour {   
    24.// An example where the encoding can be found is at   
    25.// http://www.eggheadcafe.com/articles/system.xml.xmlserialization.asp   
    26.// We will just use the KISS method and cheat a little and use   
    27.// the examples from the web page since they are fully described   
    28.// This is our local private members   
    29.private var _Save : Rect;   
    30.private var _Load : Rect;   
    31.private var _SaveMSG : Rect;   
    32.private var _LoadMSG : Rect;   
    33.//var _ShouldSave : boolean;   
    34.//var _ShouldLoad : boolean;   
    35.//var _SwitchSave : boolean;   
    36.//var _SwitchLoad : boolean;   
    37.private var _FileLocation : String;   
    38.private var _FileName : String = "SaveData.xml";   
    39.//public GameObject _Player;   
    40.var _Player : GameObject;   
    41.var _PlayerName : String = "Joe Schmoe";   
    42.private var myData : UserData;   
    43.private var _data : String;   
    44.private var VPosition : Vector3;   
    45.// When the EGO is instansiated the Start will trigger   
    46.// so we setup our initial values for our local members   
    47.//function Start () {   
    48.function Awake () {    
    49.      // We setup our rectangles for our messages   
    50.      _Save=new Rect(10,80,100,20);   
    51.      _Load=new Rect(10,100,100,20);   
    52.      _SaveMSG=new Rect(10,120,200,40);   
    53.      _LoadMSG=new Rect(10,140,200,40);   
    54.          
    55.      // Where we want to save and load to and from   
    56.      _FileLocation=Application.dataPath;   
    57.         
    58.             
    59.      // we need soemthing to store the information into   
    60.      myData=new UserData();   
    61.   }   
    62.      
    63.function Update () {}   
    64.      
    65.function OnGUI()   
    66.{      
    67.   // ***************************************************   
    68.   // Loading The Player...   
    69.   // **************************************************          
    70.   if (GUI.Button(_Load,"Load")) {   
    71.         
    72.      GUI.Label(_LoadMSG,"Loading from: "+_FileLocation);   
    73.      // Load our UserData into myData   
    74.      LoadXML();   
    75.      if(_data.ToString() != "")   
    76.      {   
    77.         // notice how I use a reference to type (UserData) here, you need this   
    78.         // so that the returned object is converted into the correct type   
    79.         //myData = (UserData)DeserializeObject(_data);   
    80.         myData = DeserializeObject(_data);   
    81.         // set the players position to the data we loaded   
    82.         VPosition=new Vector3(myData._iUser.x,myData._iUser.y,myData._iUser.z);                
    83.         _Player.transform.position=VPosition;   
    84.         // just a way to show that we loaded in ok   
    85.         Debug.Log(myData._iUser.name);   
    86.      }   
    87.      
    88.   }   
    89.      
    90.   // ***************************************************   
    91.   // Saving The Player...   
    92.   // **************************************************      
    93.   if (GUI.Button(_Save,"Save")) {   
    94.               
    95.      GUI.Label(_SaveMSG,"Saving to: "+_FileLocation);   
    96.      //Debug.Log("SaveLoadXML: sanity check:"+ _Player.transform.position.x);   
    97.         
    98.      myData._iUser.x = _Player.transform.position.x;   
    99.      myData._iUser.y = _Player.transform.position.y;   
    100.      myData._iUser.z = _Player.transform.position.z;   
    101.      myData._iUser.name = _PlayerName;      
    102.           
    103.      // Time to creat our XML!   
    104.      _data = SerializeObject(myData);   
    105.      // This is the final resulting XML from the serialization process   
    106.      CreateXML();   
    107.      Debug.Log(_data);   
    108.   }   
    109.}   
    110.      
    111./* The following metods came from the referenced URL */  
    112.//string UTF8ByteArrayToString(byte[] characters)   
    113.function UTF8ByteArrayToString(characters : byte[] )   
    114.{        
    115.   var encoding : UTF8Encoding  = new UTF8Encoding();   
    116.   var constructedString : String  = encoding.GetString(characters);   
    117.   return (constructedString);   
    118.}   
    119.//byte[] StringToUTF8ByteArray(string pXmlString)   
    120.function StringToUTF8ByteArray(pXmlString : String)   
    121.{   
    122.   var encoding : UTF8Encoding  = new UTF8Encoding();   
    123.   var byteArray : byte[]  = encoding.GetBytes(pXmlString);   
    124.   return byteArray;   
    125.}   
    126.      
    127.   // Here we serialize our UserData object of myData   
    128.   //string SerializeObject(object pObject)   
    129.function SerializeObject(pObject : Object)   
    130.{   
    131.   var XmlizedString : String  = null;   
    132.   var memoryStream : MemoryStream  = new MemoryStream();   
    133.   var xs : XmlSerializer = new XmlSerializer(typeof(UserData));   
    134.   var xmlTextWriter : XmlTextWriter  = new XmlTextWriter(memoryStream, Encoding.UTF8);   
    135.   xs.Serialize(xmlTextWriter, pObject);   
    136.   memoryStream = xmlTextWriter.BaseStream; // (MemoryStream)   
    137.   XmlizedString = UTF8ByteArrayToString(memoryStream.ToArray());   
    138.   return XmlizedString;   
    139.}   
    140.   // Here we deserialize it back into its original form   
    141.   //object DeserializeObject(string pXmlizedString)   
    142.function DeserializeObject(pXmlizedString : String)      
    143.{   
    144.   var xs : XmlSerializer  = new XmlSerializer(typeof(UserData));   
    145.   var memoryStream : MemoryStream  = new MemoryStream(StringToUTF8ByteArray(pXmlizedString));   
    146.   var xmlTextWriter : XmlTextWriter  = new XmlTextWriter(memoryStream, Encoding.UTF8);   
    147.   return xs.Deserialize(memoryStream);   
    148.}   
    149.   // Finally our save and load methods for the file itself   
    150.function CreateXML()   
    151.{   
    152.   var writer : StreamWriter;   
    153.   //FileInfo t = new FileInfo(_FileLocation+"\\"+ _FileName);   
    154.   var t : FileInfo = new FileInfo(_FileLocation+"/"+ _FileName);   
    155.   if(!t.Exists)   
    156.   {   
    157.      writer = t.CreateText();   
    158.   }   
    159.   else  
    160.   {   
    161.      t.Delete();   
    162.      writer = t.CreateText();   
    163.   }   
    164.   writer.Write(_data);   
    165.   writer.Close();   
    166.   Debug.Log("File written.");   
    167.}   
    168.      
    169.function LoadXML()   
    170.{   
    171.   //StreamReader r = File.OpenText(_FileLocation+"\\"+ _FileName);   
    172.   var r : StreamReader = File.OpenText(_FileLocation+"/"+ _FileName);   
    173.   var _info : String = r.ReadToEnd();   
    174.   r.Close();   
    175.   _data=_info;   
    176.   Debug.Log("File Read");   
    177.}   
    178.//}  
    
    
    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zhulinpptor/archive/2010/09/07/5868654.aspx
    
  • 相关阅读:
    如何实现进程间的通信
    调试手记
    WinCE的一些忠告——UNICODE编码
    一道字符串复制的面试题目
    strcpy和strncpy区别
    关于#include头文件问题
    rs232串口通讯中,读串口与读端口的区别
    IP包过滤(转)
    小数点后截位问题
    一些函数
  • 原文地址:https://www.cnblogs.com/softimagewht/p/1936843.html
Copyright © 2011-2022 走看看