对象转XML此形式适合三层风格Grid++report

//比如生成下面的字符串,用于Grid++的明细网格
<xml>
<row><CustomerID>BLONP</CustomerID><Company>国皓</Company><Contactor>黄雅玲</Contactor></row>
<row><CustomerID>CACTU</CustomerID><Company>威航货运有限公司</Company><Contactor>刘先生</Contactor></row>
<row><CustomerID>CENTC</CustomerID><Company>三捷实业</Company><Contactor>王先生</Contactor></row>
<row><CustomerID>HUNGC</CustomerID><Company>五金机械</Company><Contactor>苏先生</Contactor></row>
<row><CustomerID>MEREP</CustomerID><Company>华科</Company><Contactor>吴小姐</Contactor></row>
</xml> 
//下面的
<xml>
<Master><OrderID>10255</OrderID><CustomerID>RICSU</CustomerID><Company>永大企业</Company></Master>
</xml> 

这样形式的数据用于无明细网格,其表头表尾包含有动态数据的报表。此数据对应到报表主数据,通常只有一条记录数据。数据将加载到报表中对应的参数、部件框或自由表格单元格中。 
明细记录数据并报表主数据
<xml>
<Master><OrderID>10255</OrderID><CustomerID>RICSU</CustomerID><Company>永大企业</Company></Master>

<Detail><ProductID>2</ProductID><Name>牛奶</Name><Price>15.2000</Price><Qty>20</Qty><Amount>304.0000</Amount></Detail>
<Detail><ProductID>16</ProductID><Name>饼干</Name><Price>13.9000</Price><Qty>35</Qty><Amount>486.5000</Amount></Detail>
<Detail><ProductID>36</ProductID><Name>鱿鱼</Name><Price>15.2000</Price><Qty>25</Qty><Amount>380.0000</Amount></Detail>
<Detail><ProductID>59</ProductID><Name>苏澳奶酪</Name><Price>44.0000</Price><Qty>30</Qty><Amount>1320.0000</Amount></Detail>
</xml> 

这样形式的数据适用于在报表中定义了明细网格,且表头表尾包含有动态数据的报表。数据包含两部分,两部分数据通常具有主从一对多的关系。一部分对应报表主数据,只有一条记录的数据。另一部分对应报表明细数据,通常有多条记录的数据,此部分数据将被加载进明细网格的记录集中。 


 #region 将对象转为xml
        /// <summary>
        /// 将对象转为xml
        /// </summary>
        /// <typeparam name="T">泛型对象</typeparam>
        /// <param name="enitities">list</param>
        /// <returns></returns>
        public static string ObjListToXml<T>(List<T> enitities)
            {
                StringBuilder sb = new StringBuilder();
                PropertyInfo[] propinfos = null;
                //sb.AppendLine("<?xml version=\"1.0\" encoding=\"utf-8\"?>");  
                sb.AppendLine("<xml>");
                foreach (T obj in enitities)
                {
                    //初始化propertyinfo  
                    if (propinfos == null)
                    {
                        Type objtype = obj.GetType();
                        propinfos = objtype.GetProperties();
                    }

                    sb.AppendLine("<row>");
                    foreach (PropertyInfo propinfo in propinfos)
                    {
                        sb.Append("<");
                        sb.Append(propinfo.Name);
                        sb.Append(">");
                        sb.Append(propinfo.GetValue(obj, null));
                        sb.Append("</");
                        sb.Append(propinfo.Name);
                        sb.AppendLine(">");
                    }
                    sb.AppendLine("</row>");
                }
                sb.AppendLine("</xml>");
                return sb.ToString();
            }
        #endregion
posted @ 2026-09-06 09:53  清哥的码农生活  阅读(19)  评论(0)    收藏  举报