实体类写入xml文件,并读取xml文件转换为实体类

1.实体类写入xml文件

  public static string XmlSerialize<T>(T obj)
        {
            try
            {
                using (System.IO.StringWriter stringWriter = new StringWriter(new StringBuilder()))
                {                  
                    // 强制指定命名空间,覆盖默认的命名空间                
                    XmlSerializerNamespaces namespaces = new XmlSerializerNamespaces();
                    namespaces.Add(string.Empty, string.Empty);
                    XmlSerializer xmlSerializer = new XmlSerializer(obj.GetType());
                    xmlSerializer.Serialize(stringWriter, obj, namespaces); //删除部分头文件
                    string path = Directory.GetCurrentDirectory() + "\\";
                    FileStream fs = new FileStream(path + "cableLoss.xml", FileMode.Create);
                    StreamWriter sw = new StreamWriter(fs);
                    string sb = stringWriter.ToString();
                    string endstring = sb.Substring(sb.LastIndexOf("?>") + 2); //字符串截取去掉XML头部
                    sw.Write(endstring);
                    sw.Close();
                    fs.Close();
                    return endstring;
                }                              
            }
            catch (Exception ex)
            {
                return null;
            }

        }       

2.xml文件转化为实体类

 public static T XmlToObject<T>() where T : class
        {
            string path = Directory.GetCurrentDirectory() + "\\";
            XmlSerializer serializer = new XmlSerializer(typeof(T));
            FileStream fs = new FileStream(path + "cableLoss.xml", FileMode.Open);

            T t = (T)serializer.Deserialize(fs);
            fs.Close();
            return t;
        }

3.实体类标识

 
[Serializable, XmlType("class")]
public class CableLoss { [XmlElement("dicCUCableLoss")] public List<string> listCUCableLoss; [XmlElement("SACableLoss")] public double SACableLoss { get; set; } [XmlElement("SGCableLoss")] public double SGCableLoss { get; set; } [XmlElement("CWSGCableLoss")] public double CWSGCableLoss { get; set; } // [XmlAttribute] }

4.写入xml文件调用

  XmlSerialize<CableLoss>(cableloss);

5.读取xml文件调用

 CableLoss cableLoss= XmlToObject<CableLoss>();

 

posted @ 2022-06-16 16:07  霓裳Toy  阅读(974)  评论(0)    收藏  举报