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);

这也给了我一个运行时错误的stackoverflow。

任何帮助,将不胜感激。

提前致谢!

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

在您的第二个片段中,您需要从元素名称中删除那些空格,因为 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 TypeException Mesage有效名称。那么当然,如果你使用这个(注定的)方法来记录错误......堆栈溢出。

于 2010-07-31T22:45:18.343 回答