| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427 | 
							- using System;
 
- using System.Collections.Generic;
 
- using System.Text;
 
- using UnityEngine;
 
- namespace FairyGUI.Utils
 
- {
 
-     /// <summary>
 
-     /// A simplest and readonly XML class
 
-     /// </summary>
 
-     public class XML
 
-     {
 
-         public string name;
 
-         public string text;
 
-         Dictionary<string, string> _attributes;
 
-         XMLList _children;
 
-         public static XML Create(string tag)
 
-         {
 
-             XML xml = new XML();
 
-             xml.name = tag;
 
-             return xml;
 
-         }
 
-         public XML(string XmlString)
 
-         {
 
-             Parse(XmlString);
 
-         }
 
-         private XML()
 
-         {
 
-         }
 
-         public Dictionary<string, string> attributes
 
-         {
 
-             get
 
-             {
 
-                 if (_attributes == null)
 
-                     _attributes = new Dictionary<string, string>();
 
-                 return _attributes;
 
-             }
 
-         }
 
-         public bool HasAttribute(string attrName)
 
-         {
 
-             if (_attributes == null)
 
-                 return false;
 
-             return _attributes.ContainsKey(attrName);
 
-         }
 
-         public string GetAttribute(string attrName)
 
-         {
 
-             return GetAttribute(attrName, null);
 
-         }
 
-         public string GetAttribute(string attrName, string defValue)
 
-         {
 
-             if (_attributes == null)
 
-                 return defValue;
 
-             string ret;
 
-             if (_attributes.TryGetValue(attrName, out ret))
 
-                 return ret;
 
-             else
 
-                 return defValue;
 
-         }
 
-         public int GetAttributeInt(string attrName)
 
-         {
 
-             return GetAttributeInt(attrName, 0);
 
-         }
 
-         public int GetAttributeInt(string attrName, int defValue)
 
-         {
 
-             string value = GetAttribute(attrName);
 
-             if (value == null || value.Length == 0)
 
-                 return defValue;
 
-             int ret;
 
-             if (int.TryParse(value, out ret))
 
-                 return ret;
 
-             else
 
-                 return defValue;
 
-         }
 
-         public float GetAttributeFloat(string attrName)
 
-         {
 
-             return GetAttributeFloat(attrName, 0);
 
-         }
 
-         public float GetAttributeFloat(string attrName, float defValue)
 
-         {
 
-             string value = GetAttribute(attrName);
 
-             if (value == null || value.Length == 0)
 
-                 return defValue;
 
-             float ret;
 
-             if (float.TryParse(value, out ret))
 
-                 return ret;
 
-             else
 
-                 return defValue;
 
-         }
 
-         public bool GetAttributeBool(string attrName)
 
-         {
 
-             return GetAttributeBool(attrName, false);
 
-         }
 
-         public bool GetAttributeBool(string attrName, bool defValue)
 
-         {
 
-             string value = GetAttribute(attrName);
 
-             if (value == null || value.Length == 0)
 
-                 return defValue;
 
-             bool ret;
 
-             if (bool.TryParse(value, out ret))
 
-                 return ret;
 
-             else
 
-                 return defValue;
 
-         }
 
-         public string[] GetAttributeArray(string attrName)
 
-         {
 
-             string value = GetAttribute(attrName);
 
-             if (value != null)
 
-             {
 
-                 if (value.Length == 0)
 
-                     return new string[] { };
 
-                 else
 
-                     return value.Split(',');
 
-             }
 
-             else
 
-                 return null;
 
-         }
 
-         public string[] GetAttributeArray(string attrName, char seperator)
 
-         {
 
-             string value = GetAttribute(attrName);
 
-             if (value != null)
 
-             {
 
-                 if (value.Length == 0)
 
-                     return new string[] { };
 
-                 else
 
-                     return value.Split(seperator);
 
-             }
 
-             else
 
-                 return null;
 
-         }
 
-         public Color GetAttributeColor(string attrName, Color defValue)
 
-         {
 
-             string value = GetAttribute(attrName);
 
-             if (value == null || value.Length == 0)
 
-                 return defValue;
 
-             return ToolSet.ConvertFromHtmlColor(value);
 
-         }
 
-         public Vector2 GetAttributeVector(string attrName)
 
-         {
 
-             string value = GetAttribute(attrName);
 
-             if (value != null)
 
-             {
 
-                 string[] arr = value.Split(',');
 
-                 return new Vector2(float.Parse(arr[0]), float.Parse(arr[1]));
 
-             }
 
-             else
 
-                 return Vector2.zero;
 
-         }
 
-         public void SetAttribute(string attrName, string attrValue)
 
-         {
 
-             if (_attributes == null)
 
-                 _attributes = new Dictionary<string, string>();
 
-             _attributes[attrName] = attrValue;
 
-         }
 
-         public void SetAttribute(string attrName, bool attrValue)
 
-         {
 
-             if (_attributes == null)
 
-                 _attributes = new Dictionary<string, string>();
 
-             _attributes[attrName] = attrValue ? "true" : "false";
 
-         }
 
-         public void SetAttribute(string attrName, int attrValue)
 
-         {
 
-             if (_attributes == null)
 
-                 _attributes = new Dictionary<string, string>();
 
-             _attributes[attrName] = attrValue.ToString();
 
-         }
 
-         public void SetAttribute(string attrName, float attrValue)
 
-         {
 
-             if (_attributes == null)
 
-                 _attributes = new Dictionary<string, string>();
 
-             _attributes[attrName] = string.Format("{0:#.####}", attrValue);
 
-         }
 
-         public void RemoveAttribute(string attrName)
 
-         {
 
-             if (_attributes != null)
 
-                 _attributes.Remove(attrName);
 
-         }
 
-         public XML GetNode(string selector)
 
-         {
 
-             if (_children == null)
 
-                 return null;
 
-             else
 
-                 return _children.Find(selector);
 
-         }
 
-         public XMLList elements
 
-         {
 
-             get
 
-             {
 
-                 if (_children == null)
 
-                     _children = new XMLList();
 
-                 return _children;
 
-             }
 
-         }
 
-         public XMLList Elements()
 
-         {
 
-             if (_children == null)
 
-                 _children = new XMLList();
 
-             return _children;
 
-         }
 
-         public XMLList Elements(string selector)
 
-         {
 
-             if (_children == null)
 
-                 _children = new XMLList();
 
-             return _children.Filter(selector);
 
-         }
 
-         public XMLList.Enumerator GetEnumerator()
 
-         {
 
-             if (_children == null)
 
-                 return new XMLList.Enumerator(null, null);
 
-             else
 
-                 return new XMLList.Enumerator(_children.rawList, null);
 
-         }
 
-         public XMLList.Enumerator GetEnumerator(string selector)
 
-         {
 
-             if (_children == null)
 
-                 return new XMLList.Enumerator(null, selector);
 
-             else
 
-                 return new XMLList.Enumerator(_children.rawList, selector);
 
-         }
 
-         public void AppendChild(XML child)
 
-         {
 
-             this.elements.Add(child);
 
-         }
 
-         public void RemoveChild(XML child)
 
-         {
 
-             if (_children == null)
 
-                 return;
 
-             this._children.rawList.Remove(child);
 
-         }
 
-         public void RemoveChildren(string selector)
 
-         {
 
-             if (_children == null)
 
-                 return;
 
-             if (string.IsNullOrEmpty(selector))
 
-                 _children.Clear();
 
-             else
 
-                 _children.RemoveAll(selector);
 
-         }
 
-         static Stack<XML> sNodeStack = new Stack<XML>();
 
-         public void Parse(string aSource)
 
-         {
 
-             Reset();
 
-             
 
-             XML lastOpenNode = null;
 
-             sNodeStack.Clear();
 
-             XMLIterator.Begin(aSource);
 
-             while (XMLIterator.NextTag())
 
-             {
 
-                 if (XMLIterator.tagType == XMLTagType.Start || XMLIterator.tagType == XMLTagType.Void)
 
-                 {
 
-                     XML childNode;
 
-                     if (lastOpenNode != null)
 
-                         childNode = new XML();
 
-                     else
 
-                     {
 
-                         if (this.name != null)
 
-                         {
 
-                             Reset();
 
-                             throw new Exception("Invalid xml format - no root node.");
 
-                         }
 
-                         childNode = this;
 
-                     }
 
-                     childNode.name = XMLIterator.tagName;
 
-                     childNode._attributes = XMLIterator.GetAttributes(childNode._attributes);
 
-                     if (lastOpenNode != null)
 
-                     {
 
-                         if (XMLIterator.tagType != XMLTagType.Void)
 
-                             sNodeStack.Push(lastOpenNode);
 
-                         if (lastOpenNode._children == null)
 
-                             lastOpenNode._children = new XMLList();
 
-                         lastOpenNode._children.Add(childNode);
 
-                     }
 
-                     if (XMLIterator.tagType != XMLTagType.Void)
 
-                         lastOpenNode = childNode;
 
-                 }
 
-                 else if (XMLIterator.tagType == XMLTagType.End)
 
-                 {
 
-                     if (lastOpenNode == null || lastOpenNode.name != XMLIterator.tagName)
 
-                     {
 
-                         Reset();
 
-                         throw new Exception("Invalid xml format - <" + XMLIterator.tagName + "> dismatched.");
 
-                     }
 
-                     if (lastOpenNode._children == null || lastOpenNode._children.Count == 0)
 
-                     {
 
-                         lastOpenNode.text = XMLIterator.GetText();
 
-                     }
 
-                     if (sNodeStack.Count > 0)
 
-                         lastOpenNode = sNodeStack.Pop();
 
-                     else
 
-                         lastOpenNode = null;
 
-                 }
 
-             }
 
-         }
 
-         public void Reset()
 
-         {
 
-             if (_attributes != null)
 
-                 _attributes.Clear();
 
-             if (_children != null)
 
-                 _children.Clear();
 
-             this.text = null;
 
-         }
 
-         public string ToXMLString(bool includeHeader)
 
-         {
 
-             StringBuilder sb = new StringBuilder();
 
-             if (includeHeader)
 
-                 sb.Append("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");
 
-             ToXMLString(sb, 0);
 
-             return sb.ToString();
 
-         }
 
-         void ToXMLString(StringBuilder sb, int tabs)
 
-         {
 
-             if (tabs > 0)
 
-                 sb.Append(' ', tabs * 2);
 
-             if (name == "!")
 
-             {
 
-                 sb.Append("<!--");
 
-                 if (text != null)
 
-                 {
 
-                     int c = sb.Length;
 
-                     sb.Append(text);
 
-                     XMLUtils.EncodeString(sb, c);
 
-                 }
 
-                 sb.Append("-->");
 
-                 return;
 
-             }
 
-             sb.Append('<').Append(name);
 
-             if (_attributes != null)
 
-             {
 
-                 foreach (KeyValuePair<string, string> kv in _attributes)
 
-                 {
 
-                     sb.Append(' ');
 
-                     sb.Append(kv.Key).Append('=').Append('\"');
 
-                     int c = sb.Length;
 
-                     sb.Append(kv.Value);
 
-                     XMLUtils.EncodeString(sb, c, true);
 
-                     sb.Append("\"");
 
-                 }
 
-             }
 
-             int numChildren = _children != null ? _children.Count : 0;
 
-             if (string.IsNullOrEmpty(text) && numChildren == 0)
 
-                 sb.Append("/>");
 
-             else
 
-             {
 
-                 sb.Append('>');
 
-                 if (!string.IsNullOrEmpty(text))
 
-                 {
 
-                     int c = sb.Length;
 
-                     sb.Append(text);
 
-                     XMLUtils.EncodeString(sb, c);
 
-                 }
 
-                 if (numChildren > 0)
 
-                 {
 
-                     sb.Append('\n');
 
-                     int ctabs = tabs + 1;
 
-                     for (int i = 0; i < numChildren; i++)
 
-                     {
 
-                         _children[i].ToXMLString(sb, ctabs);
 
-                         sb.Append('\n');
 
-                     }
 
-                     if (tabs > 0)
 
-                         sb.Append(' ', tabs * 2);
 
-                 }
 
-                 sb.Append("</").Append(name).Append(">");
 
-             }
 
-         }
 
-     }
 
- }
 
 
  |