示例#1
0
        public void LoadXmlData <T>(ResourceID resID) where T : XmlBaseData
        {
            string typeKey = GetDataListsKey <T>();

            if (m_XmlConfigDataLists.ContainsKey(typeKey))
            {
                Debug.LogWarning("duplicated key in config: " + typeKey);
                return;
            }
            List <T> result = ParseXml <T>(resID);

            if (result != null)
            {
                List <XmlBaseData> list = new List <XmlBaseData>();
                for (int i = 0; i < result.Count; i++)
                {
                    XmlBaseData item = result[i];
                    list.Add(item);
                    string pKey = item.GetPrimaryKey();
                    if (string.IsNullOrEmpty(pKey) == false)
                    {
                        string itemKey = GetDataItemKey <T>(pKey);
                        if (m_XmlConfigDataItemss.ContainsKey(itemKey) == false)
                        {
                            m_XmlConfigDataItemss.Add(itemKey, item);
                        }
                        else
                        {
                            Debug.Log("duplicate item key: " + itemKey);
                        }
                    }
                }
                m_XmlConfigDataLists.Add(typeKey, list);
            }
        }
示例#2
0
        public static List <T> ParseXml <T>(string filepath) where T : XmlBaseData
        {
            XmlDocument xmlDoc = new XmlDocument();

            xmlDoc.Load(filepath);
            T           obj      = (T)Activator.CreateInstance(typeof(T));
            XmlNodeList nodeList = xmlDoc.SelectSingleNode(XmlBaseData.GetRootName()).ChildNodes;
            List <T>    result   = new List <T>();

            foreach (XmlElement xe in nodeList)
            {
                obj.ParseXmlData(xe);
            }
            result.Add(obj);

            return(result);
        }