如何在特定父节点内的XML中添加子元素?
问题描述:
我已经序列化以下日志类:如何在特定父节点内的XML中添加子元素?
[Serializable]
[XmlRoot("Log")]
public class Log
{
[XmlElement("ErrorLog")]
public ErrorLog Error { get; set; }
[XmlElement("MessageLog")]
public MessageLog Message { get; set; }
}
public class ErrorLog
{
[XmlElement("ErrorMessage")]
public string ErrorMessage { get; set; }
[XmlElement("Module")]
public string Module { get; set; }
[XmlElement("Component")]
public string Component { get; set; }
}
public class MessageLog
{
[XmlElement("Message")]
public string Message { get; set; }
[XmlElement("Module")]
public string Module { get; set; }
}
我序列化上面的日志类在XML文件为:
ABC TestClient的
ABC TestClient的 DataAccessLayer
难道我添加的所有元素无论是ErrorLogs或MessageLogs单根内,如: ABC TestClient的 DataAccessLayer ABC测试客户端
答
您可以在Log
的内部创建BaseLog
类和声明List<BaseLog>
。 MesageLog
和ErrorLog
应该BaseLog
顺便说继承,就没有必要XmlElement
属性应用到的属性,如果有XmlElement的值相同属性名称。请投入一些时间为记录器,如log4net
我想保持日志为XML不是最佳实践(使用纯文本文件)。由于应用程序可能每秒崩溃,因此几乎每次出现新消息时都应刷新日志文件。使用普通文件(在最后一个字节后面写字节)和使用xml很难,因为必须在结束标记之前写入。