现在的位置: 首页 > 综合 > 正文

C#开发之XmlString与实体类对象的相互转换

2013年09月12日 ⁄ 综合 ⁄ 共 1300字 ⁄ 字号 评论关闭

1.XmlString转化成实体类对象
XmlString转化成实体类对象即XML的解析并给实体类赋值。
比如,将XMl解析并生成Cost实体类:

public static object GetCosts(string xmlString) {
            Model.COSTS myCosts = new COSTS();
            //Xml解析
            XmlDocument doc = new XmlDocument();
            doc.LoadXml(xmlString);
            XmlNodeList xxList = doc.GetElementsByTagName("Object"); //取得节点名为Object的集合
            foreach(XmlNode xxNode in xxList)  //xxNode 是每一个<CL>...</CL>体
            {
                XmlNodeList childList = xxNode.ChildNodes; //取得CL下的子节点集合

                foreach(XmlNode node in childList) {
                    String temp = node.Name;
                    switch(temp) {
                        case "ID":    //编码
                            myCosts.ID = node.InnerText;
                            break;
                        case "ITEM_CODE":       //材料编码
                            myCosts.ITEM_CODE = node.InnerText;
                            break;
                    }
                }
            }
            return myCosts;
        }

附XMl样式如下:

<Objects>
<Object>
<ID>100</ID>
<ITEM_CODE>1</ITEM_CODE>
</Object>
</Objects>

2.实体类对象转化成XmlString

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("<Objects>");
            foreach (T obj in enitities)
            {
                //初始化propertyinfo
                if (propinfos == null)
                {
                    Type objtype = obj.GetType();
                    propinfos = objtype.GetProperties();
                }

                sb.AppendLine("<Object>");
                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("</Object>");
            }
            sb.AppendLine("<Objects>");
            return sb.ToString();
        }

 

抱歉!评论已关闭.