C#XML反序列化数组元素值

时间:2013-12-05 11:34:23

标签: c# xml serialization

我已经设法在大多数情况下反序列化我的XML,但我坚持一个特定的事情。如何获取元素的值(如果它在数组中),并且该数组中的每个项都有自己的属性。让我告诉你我有什么

<BusinessObject Name="BusinessName" RecID="12345">
  <FieldList>
    <Field Name="Field1">FieldValue1</Field>
    <Field Name="Field2">FieldValue2</Field>
  </FieldList>
</BusinessObject>

所以这是一个简化版本,但显示了XML的基础。我目前在尝试在各自的Field元素中捕获“FieldValue1”和“FieldValue2”时遇到了麻烦。

[XmlRoot("BusinessObject")]
public sealed class BusinessObject
{
    [XmlAttribute("Name")]
    public string Name { get; set; }

    [XmlAttribute("RecID")]
    public string RecID { get; set; }

    [XmlElement("FieldList", Type = typeof(FieldList))]
    public FieldList FieldList { get; set; }

    public BusinessObject()
    {
        FieldList = null;
    }

    public static BusinessObject FromXmlString(string xmlString)
    {
        var reader = new StringReader(xmlString);
        var serializer = new XmlSerializer(typeof(BusinessObject));
        var instance = (BusinessObject)serializer.Deserialize(reader);

        return instance;
    }
}

[Serializable]
public class FieldList
{
    [XmlElement("Field", Type = typeof(Field))]
    public Field[] Fields { get; set; }

    public FieldList()
    {
        Fields = null;
    }
}

[Serializable]
public class Field
{
    [XmlAttribute("Name")]
    public string Name { get; set; }

    public Field()
    {
    }
}

我确信这只是一件我想念的简单事情,但我在试图将问题转化为文字以进行相关搜索方面遇到了麻烦。

非常感谢,

标记

1 个答案:

答案 0 :(得分:0)

谢谢你看看。显然我应该在发布之前发挥更多作用,因为我已经设法让它发挥作用。我必须将以下内容添加到Field类:

[Serializable]
public class Field
{
    [XmlAttribute("Name")]
    public string Name { get; set; }

    [XmlText]
    public string Value { get; set; }

    public Field()
    {
    }
}

不幸的是我只是在这里运行快递副本,所以我无法在没有命令提示符的情况下使用xsd。

干杯,

标记