【发布时间】:2015-06-22 14:29:38
【问题描述】:
我创建了这个类,它将附加到名为 Email Alerts h1、body 和 ids 的 XML 中。但是,当文件不存在时,我从一开始(当我调用 LoadFromFile 时)运行此文件时遇到问题 - 所以我们必须创建一个文件并开始记录它。
public class EMailAlert
{
public string h1 { get; set; }
public string body { get; set; }
public string idList { get; set; }
public void Save(string fileName)
{
using (var stream = new FileStream(fileName, FileMode.Create))
{
var XML = new XmlSerializer(typeof(EMailAlert));
XML.Serialize(stream, this);
}
}
public static EMailAlert LoadFromFile(string fileName)
{
if (!File.Exists(fileName))
{
var file = new FileInfo(fileName);
file.Directory.Create();
var xmlFile = new XDocument(
new XDeclaration("1.0", "utf-8", "yes"),
new XComment("Email Logger"));
xmlFile.Add(new XElement("EmailAlerts"));
xmlFile.Save(fileName);
}
using (var stream = new FileStream(fileName, FileMode.Open))
{
var XML = new XmlSerializer(typeof(EMailAlert));
return (EMailAlert)XML.Deserialize(stream);
}
}
}
当我运行此代码时(没有 xml 文件 - 所以它会创建一个 XML 文件,然后抛出此错误 {"<EmailAlerts xmlns=''> was not expected."}
这是 xml 文件的样子
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<!--Email Logger-->
<EmailAlerts />
不知道为什么当我调用 LoadFromFile 时它没有发回一个空的 EmailAlert。
【问题讨论】:
-
EmailAlerts != EmailAlert。听起来您想序列化警报列表,这与您编写的内容不接近。
-
是的,你是对的,我需要一个序列化列表。我该怎么办。抱歉,我是新手
-
添加一个名为 EmailAlerts 的类,这样您就可以实际存储一组警报,这将是最明显的下一步。
-
好的,我创建了另一个名为 EmailAlerts 的类 .. 使用类类型为 EmailAlert 的 getter 和 setter,但我怎样才能将它们加载到 XML 中并从中读取呢?
标签: c# xml-serialization xml-deserialization