Пример #1
0
        /// <summary>
        /// 递归解析(无法读取基础类型意外的数据)
        /// </summary>
        /// <returns>The data.</returns>
        /// <typeparam name="T">The 1st type parameter.</typeparam>
        static T ParsingData <T>(XmlNode parentNode, T data) where T : class, IData <T>
        {
            string format    = parentNode.Attributes["format"].Value;
            string value     = parentNode.Attributes["value"].Value;
            T      childData = DataTool.ParsingFormat <T>(parentNode.Name, format, value, data);

            foreach (XmlNode node in parentNode.ChildNodes)
            {
                ParsingData <T>(node, childData);
            }

            return(data);
        }
Пример #2
0
        /// <summary>
        /// 通过字符串读取xml格式文件
        /// </summary>
        /// <param name="data">Data.</param>
        /// <param name="stream">Stream.</param>
        /// <typeparam name="T">The 1st type parameter.</typeparam>
        public static void LoadDataWihtStream <T>(ref T data, string stream) where T : class, IData <T>
        {
            XmlDocument xmlDoc = new XmlDocument();

            xmlDoc.LoadXml(stream);
            // 创建根节点
            XmlNode root = xmlDoc.FirstChild;

            data.Key = root.Name;
            string format = root.Attributes["format"].Value;
            string value  = root.Attributes["value"].Value;

            DataTool.ParsingFormat <T>(format, value, data);

            // 创建子节点
            foreach (XmlNode node in root.ChildNodes)
            {
                ParsingData <T>(node, data);
            }
        }
Пример #3
0
        /// <summary>
        /// 解析CSV内容
        /// </summary>
        /// <returns>The csv.</returns>
        /// <param name="content">Content.</param>
        /// <param name="data">Data.</param>
        /// <typeparam name="T">The 1st type parameter.</typeparam>
        static T ParsingCsv <T>(T data, string content) where T : class, IData <T>
        {
            /* CSV文件必须遵循以下格式
             * --------------------------------------------------------------------------------
             *	ID			|	Type1			Type2			Type3			Type4	...
             *---------------------------------------------------------------------------------
             *	uint		|	format			format			format			format
             *---------------------------------------------------------------------------------
             *  00001		|	xxxx			xxxx			xxxx			xxxx
             *---------------------------------------------------------------------------------
             *  00002		|	xxxx			xxxx			xxxx			xxxx
             *---------------------------------------------------------------------------------
             * ...
             */

            // 消除回车键
            if (content.EndsWith("\n"))
            {
                content = content.Substring(0, content.Length - 1);
            }

            // 将字符串分组
            string[] line    = content.Split(new string[] { "\r\n" }, StringSplitOptions.None);
            string[] names   = line[0].Split(","[0]);
            string[] formats = line[1].Split(","[0]);
            for (int i = 2; i < line.Length; i++)
            {
                string[] values = line[i].Split(","[0]);
                T        node   = data.CreatChildData(values[0].ToString(), uint.Parse(values[0]));
                for (int j = 1; j < values.Length; j++)
                {
                    DataTool.ParsingFormat <T>(names[j], formats[j], values[j], node);
                    //GameCommon.GameCommon.Log(values[j]);
                }
            }
            return(null);
        }