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

本文介绍了如何在C#中进行XmlString到实体类对象的转换以及实体类对象回转为XmlString的过程。以一个示例展示了XML解析生成Cost实体类的具体操作,同时提供了XML样例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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();
        }




 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值