在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