1

xmlwriterを使用してxmlドキュメントを作成しています。xmlドキュメントは次のようになります。

<?xml version="1.0" encoding="utf-8" ?> 
<ExceptionsList /> 

/>を防ぎ、ルートノードを適切に終了するにはどうすればよいですか?

このため、ルートノードに何も追加できません。

xmlファイルを作成するための私のコードは次のようになります。

string formatDate = DateTime.Now.ToString("d-MMM-yyyy");

XmlTextWriter xmlWriter = new XmlTextWriter(xmlfileName, Encoding.UTF8);

xmlWriter.Formatting = Formatting.Indented;
xmlWriter.Indentation = 3;
xmlWriter.WriteStartDocument();

xmlWriter.WriteStartElement("ExceptionsList"); // ExceptionsList (Root) Element

xmlWriter.WriteEndElement(); // End of ExceptionsList (Root) Element

xmlWriter.WriteEndDocument();

xmlWriter.Flush();
xmlWriter.Close();

そして、私はこのようにルートノードに追加します:

XDocument xml = XDocument.Load(xmlFileName);
XElement root = xml.Root;

root.Add(new XElement("Exception",
    new XElement("Exception Type", exceptionType),
    new XElement("Exception Message", exceptionMessage),
        new XElement("InnerException", innerException),
    new XElement("Comment", comment)));

xml.Save(xmlFileName);

これにより、実行時エラーでもスタックオーバーフローが発生します。

どんな助けでもいただければ幸いです。

前もって感謝します!

4

2 に答える 2

3

ExceptionsListコードは正しく、要素を閉じる方法を変更する必要はありません。

xmlWriter.WriteStartElement("ExceptionsList"); // ExceptionsList (Root) Element

xmlWriter.WriteStartElement("Exception"); // An Exception element
xmlWriter.WriteEndElement();

xmlWriter.WriteEndElement(); // End of ExceptionsList (Root) Element

2番目のスニペットでは、要素名からこれらの空白を削除する必要があります。これは、XML仕様で禁止されているためXDocument、次のように要素をインスタンスに追加します。

XDocument xml = new XDocument();
xml.Add(new XElement("Exception",
    new XElement("ExceptionType", "Exception"),
    new XElement("ExceptionMessage", 
        new XElement("InnerException", "innerException")),
    new XComment("some comment")));

xml.Save("sample2.xml");
于 2010-07-31T22:41:11.807 に答える
0

問題はここにあると思います:

    new XElement("Exception Type", exceptionType),
     new XElement("Exception Message", exceptionMessage),

xml要素の有効な名前でException Typeもありません。Exception Mesageそしてもちろん、この(doomed)メソッドを使用してエラーをログに記録すると...スタックオーバーフロー。

于 2010-07-31T22:45:18.343 に答える