繁体   English   中英

如何将对象的属性序列化为XML元素的属性?

[英]How to serialize object's property to XML element's attribute?

我创建了一个可序列化的对象,我想将其序列化为XML,然后反序列化。 我想要的不过是将该对象的一个​​属性另存为XML属性。 这是我的意思:

[Serializable]
public class ProgramInfo
{
    public string Name { get; set; }
    public Version Version { get; set; }
}

public class Version
{
    public int Major { get; set; }
    public int Minor { get; set; }
    public int Build { get; set; }
}

我想将ProgramInfo保存为如下所示的XML文件:

<?xml version="1.0" encoding="utf-8" ?>
<ProgramInfo Name="MyApp" Version="1.00.0000">

</ProgramInfo>

注意XML中的Version属性及其对应的属性。 我已经有了解析器,可以将字符串“ 1.00.0000”转换为有效的Version对象,反之亦然,但是我不知道如何将其用于此XML序列化方案。

您需要的是一个被序列化的字符串表示形式的属性:

[Serializable]
public class ProgramInfo
{
    [XmlAttribute]
    public string Name { get; set; }

    [XmlIgnore]
    public Version Version { get; set; }

    [XmlAttribute("Version")
    public string VersionString 
    { 
      get { return this.Version.ToString(); } 
      set{ this.Version = Parse(value);}
    }
}

您可以做的是拥有一个VersionValue和一个VersionType属性

[Serializable]
public class ProgramInfo
{
  private string _versionValue;
  public string Name { get; set; }
  public string VersionValue 
  { 
    get
    {
      return _versionValue;
    }
    set{
       _versionValue = value;
       //Private method to parse
       VersonType = parseAndReturnVersionType(value);

       } 
  }
  public Version VersionType { get; set; }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM