代码之家  ›  专栏  ›  技术社区  ›  Vasyl Boroviak

Xml序列化。反序列化并转换为其他对象

  •  0
  • Vasyl Boroviak  · 技术社区  · 14 年前

    public class MyClass
    {
        [XmlElement("Date")]
        public DateTime Date { get; set; }
    }
    

    它被XML序列化为一个文件:

    var myClass = new MyClass() { Date = new DateTime(2010, 09, 24) };
    new XmlSerializer(typeof(MyClass)).Serialize(fileStream, myClass);
    

    <MyClass>
        <Date>2010-09-24T00:00:00</Date>
    </MyClass>
    

    之后,创建了新的日期持有者类:

    public class MyDate
    {
        public int Year { get; set; }
        public int Month { get; set; }
        public int Date { get; set; }
    }
    

    在MyClass中使用而不是系统日期时间:

    public class MyClass
    {
        [XmlElement("Date")]
        public MyDate Date { get; set; }
    }
    

    MyClass myClass = (MyClass)new XmlSerializer(typeof(MyClass)).Deserialize(fileStream);
    

    问题是我不能改变我的班级。我只能更改MyDate类和序列化/反序列化代码。

    1 回复  |  直到 14 年前
        1
  •  0
  •   Greg Beech    14 年前

    一种选择是实施 IXmlSerializable MyDate 类,然后分析 ReadXml 方法使用 XmlConvert.ToDateTime .

    如果 读取XML 方法,但始终以 WriteXml