2017-01-12 4 views
2

ExceptionオブジェクトからSQLデータベースに保存するXML文書を作成したいと考えています。例外オブジェクトをXML文書に簡単に変換する方法はありますか?例外オブジェクトをXML文書に変換する

public void WriteError(Exception ex) 
{ 
    var doc = new XmlDocument(); 
    doc.Load(ex); 
    sql.Insert(doc); 
} 
+0

あなたは、これがhttps://seattlesoftware.wordpress.com/2008/08/22/serializing-exceptions-to-xml/ –

+0

ここで回答された可能性があります[どのようEXCEPシリアル化するためにチェックすることC#でオブジェクトを作成する](http://stackoverflow.com/questions/486460/how-to-serialize-an-exception-object-in-c) – RamblinRose

答えて

1

あなたが探しているものは、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(); 
     } 
    } 
0
ここ

@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()); 
    } 
} 
1

使用して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); 
     } 
関連する問題