使用重复(但不同)的元素对XML进行反序列化

问题描述 投票:1回答:2

我提供的XML格式我真的很想反序列化:

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<data version='1'>
  <id>1</id>
  <property name='firstName'>John</property>
  <property name='lastName'>Smith</property>
</data>

我的问题是涉及“属性”元素。我从来不需要处理类似的事情,所以我不确定应该如何构造我的课程。我通常会选择:

public class data
{
    public string id { get; set; }
    public string firstName { get; set; }
    public string lastName { get; set; }
}

然后像这样反序列化:

var recordSerializer = new XmlSerializer(typeof(data));
var myData = (data)recordSerializer.Deserialize(reader);

我确实尝试创建自定义的“属性”类,但是我不知道从那里去哪里:

public class property
{
   public string name { get; set; }
   public string value { get; set; }
}
c# xml
2个回答
1
投票

您可以这样做

public class data
{
    public string id { get; set; }

    [XmlElement(ElementName = "property")]
    public List<property> lista { get; set; }
}

public class property
{
    [XmlAttribute("name")]
    public string name { get; set; }
    [XmlText( typeof(string))]
    public string value { get; set; }
}

如果不使用列表,则必须在xml中添加名称空间以区分属性


0
投票

为数据类提供属性类的数组

    public class data
    {
        public string id { get; set; }

        [XmlElement("property")]
        public property[] Properties { get; set; }
    }
© www.soinside.com 2019 - 2024. All rights reserved.