使用重复的XmlElementAttribute名称从XML还原对象

时间:2014-01-23 10:08:43

标签: c# xml-serialization xmlserializer

我有一个具有这种结构的对象:

    public class XMLTagDataSection
    {
        [XmlElement("Type", Order=1)]
        public EnuDataType XML_type  { get; set; }

        [XmlElement("Value", IsNullable = false, Order = 2)]
        public string XML_Value      { get; set; }

        [XmlElement("Value", IsNullable = false, Order = 3)]
        public XMLTagValue Tag_Value { get; set; }
    }

    public class XMLTagValue
    {
        [XmlElement("Variable", IsNullable = false, Order = 4)]       
        public int   Variable { get; set; }
    }

生成类似的XML文件:

案例#1:

    <Data>
      <Offset>0</Offset>
      <Type>ASCII</Type>          
      <Value>
        <Variable>1</Variable>
      </Value>
    </Data>

案例#2:

    <Data>
      <Offset>0</Offset>
      <Type>ASCII</Type>          
      <Value>TestString</Value>
    </Data>

我的实际问题是我无法将两个不同的值标签反序列化回适当的对象。

1 个答案:

答案 0 :(得分:0)

我自己认为不同的价值标签就像那样;

    [XmlInclude(typeof(XMLTagValue)), XmlInclude(typeof(XMLValue))]
    public class XMLTagDataSection
    {
        [XmlElement("Offset")]
        public int XML_Offset        { get; set; }

        [XmlElement("Type")]
        public EnuDataType XML_type  { get; set; }

        public object Tag_Value      { get; set; }
    }

    public class XMLVariable
    {
        [XmlElement("Variable", IsNullable = false)]       
        public int   Variable { get; set; }
    }

    public class XMLValue
    {
        [XmlElement("Value", IsNullable = false)]
        public string XML_Value      { get; set; }
    }

但在这种情况下,对象Tag_Value成为XMLfile中的自有标记。 有没有办法启用xmlserializer的这种行为