示例#1
0
        /// <summary>
        /// 转化对象为xml字符串
        /// </summary>
        /// <param name="builder"></param>
        /// <param name="model"></param>
        private static void ToXmlString(StringBuilder builder, object model)
        {
            KubiuReflector reflector = KubiuReflector.Cache(model.GetType(), false);

            foreach (var item in reflector.Properties)
            {
                builder.Append("<" + item.Name + ">");
                object v = item.GetValue(model);
                if (v == null || v is DBNull)
                {
                    builder.Append("</" + item.Name + ">");
                    continue;
                }
                else if (v is String || v is ValueType)
                {
                    builder.Append("<![CDATA[" + v.ToString() + "]]>");
                    builder.Append("</" + item.Name + ">");
                    continue;
                }
                if (v is IEnumerable)
                {
                    builder.Append("<item>");
                    IEnumerable array = (IEnumerable)v;
                    var         ee    = array.GetEnumerator();
                    if (ee.MoveNext())
                    {
                        ToXmlString(builder, ee.Current);
                    }
                    builder.Append("<item>");
                }

                builder.Append("</" + item.Name + ">");
            }
        }
示例#2
0
        /// <summary>
        /// xml填充对象
        /// </summary>
        /// <param name="collection"></param>
        /// <returns></returns>
        public T FillModel <T>() where T : class, new()
        {
            KubiuReflector reflector = KubiuReflector.Cache(typeof(T), false);
            T model = reflector.NewObject() as T;

            FillModel(model);
            return(model);
        }
示例#3
0
        /// <summary>
        /// xml填充对象
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public void FillModel(object model)
        {
            if (model == null)
            {
                throw new ArgumentNullException("要填充对象为空");
            }

            KubiuReflector reflector = KubiuReflector.Cache(model.GetType(), false);
            string         key       = string.Empty;

            foreach (var property in reflector.Properties)
            {
                key = "/xml/" + property.Name;
                if (IsExistNode(key))
                {
                    SetValue(model, property, GetValue(key));
                }
            }
        }