在C#中编写XML – ‘状态Epilog中的Token StartElement将导致无效的XML文档’错误

我正在尝试写入XML文档,从列表的ArrayList中获取数据

for (int i = 0; i < 15; i++) { string headname = (headers[0] as List)[i]; headname.Replace("&", "&"); headname.Replace("", ">"); headname.Replace("\"", """); headname.Replace("'", "'"); textWriter.WriteStartElement("MetadataName", ""); textWriter.WriteString(headname); textWriter.WriteEndElement(); 

我遇到的问题是,它经过一次for循环,我得到一个’状态Epilog中的Token StartElement将导致无效的XML文档’错误就行了WriteStartElement,我已经尝试查找如何解决它,并没有真正有任何突破。 谢谢。

已编辑以进行更新。

你的问题在这里:

 textWriter.WriteStartElement("Metadata Name", ""); 

元素名称不能包含空格。 试试这个:

 textWriter.WriteStartElement("MetadataName", ""); 

我假设你的headers数组中的数据是格式良好的XML(例如,所有&被转义为& etc …)。

另外,正如Mark在他的回答中所说,你需要确保XML是有根的 – 也就是说,有一个根元素,你可以在其中放置MetadataName元素。

阅读格式良好的XML及其含义 – 在构建文档时,需要确保文档格式正确。

XML文档将具有根元素,即包含所有其他元素的根元素。 你没有

你的文档就像

   

XML文档就像

     

您需要围绕循环使用WriteStartElement和WriteEndElement