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

时间:2018-01-07 18:46:02

标签: c# xml newline xmldocument invalidoperationexception

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

  

InvalidOperationException:状态Document中的Token Text会导致XML文档无效。

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

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/>

1 个答案:

答案 0 :(得分:4)

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

您可以使用:

xml.WriteRaw("\n");

注意WriteRaw会写出你所说的一切。即如果你决定在文档的开头跳过XML声明并开始&#34; XML&#34;使用新行,它将生成无效的XML。如果您只想获得精美的XML - 请使用Indentation and new line command for XMLwriter in C#