为什么 XmlWriter.WriteString("\n") 抛出异常?

Why does XmlWriter.WriteString("\n") throw an Exception?

我正在尝试在 xml.WriteStartDocument() 之后写一个新行。当我这样做时,它会抛出异常。如果我将它写在根元素中,它似乎不会抛出异常。

InvalidOperationException: Token Text in state Document would result in an invalid XML document.

那么为什么这不起作用?我怎样才能让它发挥作用?

using(XmlWriter xml = XmlWriter.Create(xmlFile))
{
  xml.WriteStartDocument();
  xml.WriteString("\n"); // <-- Exception
  // more nodes here
}

我正在尝试在 XML 声明和根节点之间输出新行,因为没有它 XmlWriter 会生成一个难以阅读的字符串。期望的输出:

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

WriteString 用于在 XML 元素内写入字符串值。他要写的时候没有元素,所以失败

您可以使用:

xml.WriteRaw("\n");

请注意,WriteRaw 会准确地写下您所说的一切。 IE。如果您决定跳过文档开头的 XML 声明并以新行开始 "XML",它将产生无效的 XML。如果你只是想获得漂亮的 XML - 使用 Indentation and new line command for XMLwriter in C#.