【发布时间】:2015-08-26 13:46:32
【问题描述】:
我有一个非常简单的应用程序,其中一个 XML 文件被反序列化为对象。当我尝试从对象中读出值时,我得到null。
我的 XML 文件如下所示:
<?xml version="1.0" encoding="utf-8" ?>
<Settings>
<HomePage>http://www.google.dk</HomePage>
<DefaultAudioLevel>100</DefaultAudioLevel>
</Settings>
我的模型看起来像这样:
[Serializable()]
public class Settings
{
[XmlElement("HomePage")]
public string Homepage { get; set; }
[XmlElement("DefaultAudioLevel")]
public string DefaultAudioLevel { get; set; }
}
还有SettingSerializer.cs:
public class SettingSerializer
{
private string path;
private string EXE = Assembly.GetExecutingAssembly().GetName().Name;
Settings settings = null;
public SettingSerializer(string xmlPath = null)
{
path = new FileInfo(xmlPath ?? EXE + ".xml").FullName.ToString();
}
public void Deserialize()
{
XmlSerializer serializer = new XmlSerializer(typeof(Settings));
StreamReader reader = new StreamReader(path);
settings = (Settings)serializer.Deserialize(reader);
reader.Close();
}
}
还有我的测试课:
static void Main(string[] args)
{
SettingSerializer serializer = new SettingSerializer();
serializer.Deserialize();
Settings settings = new Settings();
Console.WriteLine(settings.Homepage);
Console.WriteLine(settings.DefaultAudioLevel);
Console.ReadKey();
}
谁能发现错误?
【问题讨论】:
-
您在
Main中的settings需要从serializer.Settings分配,而不是新对象。您还需要公开settings字段,或者只需将反序列化设置为返回设置对象而不是 void,这样您就可以拥有Settings settings = serializer.Deserialize()。
标签: c# xml xml-serialization xml-deserialization