我不知道我在这里做错了什么,但每当我尝试反序列化我的xml对象时,所有的值都会出现空值。 我知道路径是正确的,代码是正确加载文档,但是当我尝试反序列化它时,一切都是空的。 谁能告诉我我在这里做错了什么?
我的xml结构:
<settings>
<settingsList>
<setting>
<name>ConnectionString</name>
<value>testconnectionstring</value>
</setting>
</settingsList>
</settings>
Settings.cs:
[DataContract]
[Serializable()]
[XmlRoot(ElementName = "settings")]
public class Settings
{
[DataMember]
[XmlElement("settingsList")]
public List<Setting> SettingsList { get; set; }
}
Setting.cs:
[DataContract]
[Serializable()]
[XmlRoot(ElementName = "setting")]
public class Setting
{
[DataMember]
[XmlElement("name")]
public string Name { get; set; }
[DataMember]
[XmlElement("value")]
public string Value { get; set; }
}
最后,我的反序列化代码:
var xml = XDocument.Load(docPath);
var serializer = new XmlSerializer(typeof(Settings));
var settings = (Settings)serializer.Deserialize(xml.CreateReader());
答案 0 :(得分:1)
您需要使用XmlArray和XmlArrayItem:
[DataMember]
[XmlArray("settingsList")]
[XmlArrayItem("setting")]
public List<Setting> SettingsList { get; set; }
答案 1 :(得分:0)
我认为问题出在这里:[XmlRoot(ElementName = "setting")]
在setting.cs.我认为它必须是[XmlRoot(ElementName = "settingList")]
coz设置列表是所有设置的父级。
试一试。