ExceptionオブジェクトからSQLデータベースに保存するXML文書を作成したいと考えています。例外オブジェクトをXML文書に簡単に変換する方法はありますか?例外オブジェクトをXML文書に変換する
public void WriteError(Exception ex)
{
var doc = new XmlDocument();
doc.Load(ex);
sql.Insert(doc);
}
ExceptionオブジェクトからSQLデータベースに保存するXML文書を作成したいと考えています。例外オブジェクトをXML文書に簡単に変換する方法はありますか?例外オブジェクトをXML文書に変換する
public void WriteError(Exception ex)
{
var doc = new XmlDocument();
doc.Load(ex);
sql.Insert(doc);
}
あなたが探しているものは、XmlSerializerです。シリアライズは文字列に変更され、XmlSerializerはそれをさらに進めます。私は、ファイルに生成されたXMLを書き込み拡張メソッドを使用しますが、あなたはあなた自身のニーズのためにそれを適応させることができます。
public static void WriteToXmlFile<T>(string filePath, T objectToWrite, bool append = false) where T : new()
{
TextWriter writer = null;
try
{
var serializer = new XmlSerializer(typeof(T));
writer = new StreamWriter(filePath, append);
serializer.Serialize(writer, objectToWrite);
}
finally
{
if (writer != null)
writer.Close();
}
}
@Forkliftが提案されているようXmlSerializer
でそれを行う方法は次のとおりです。
public void WriteError(Exception ex)
{
XmlSerializer xmlSerializer = new XmlSerializer(typeof(Exception));
using (var memoryStream = new MemoryStream()) {
xmlSerializer.Serialize(memoryStream, ex);
var streamReader = new StreamReader(memoryStream);
sql.Insert(streamReader.ReadToEnd());
}
}
使用してXML LINQ:
public static void WriteError(Exception ex)
{
XDocument doc = new XDocument("Error", new object[] {
new XElement("message", ex.Message),
new XElement("stacktrace", ex.StackTrace),
new XElement("helplink", ex.HelpLink)
});
sql.Insert(doc);
}
あなたは、これがhttps://seattlesoftware.wordpress.com/2008/08/22/serializing-exceptions-to-xml/ –
ここで回答された可能性があります[どのようEXCEPシリアル化するためにチェックすることC#でオブジェクトを作成する](http://stackoverflow.com/questions/486460/how-to-serialize-an-exception-object-in-c) – RamblinRose