我试图在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/>
答案 0 :(得分:4)
WriteString用于在XML元素内写入字符串值。他想写的时候没有元素,所以失败了。
您可以使用:
xml.WriteRaw("\n");
注意WriteRaw
会写出你所说的一切。即如果你决定在文档的开头跳过XML声明并开始&#34; XML&#34;使用新行,它将生成无效的XML。如果您只想获得精美的XML - 请使用Indentation and new line command for XMLwriter in C#。