我正在尝试写入XML文档,从列表的ArrayList中获取数据
for (int i = 0; i < 15; i++)
{
string headname = (headers[0] as List<string>)[i];
headname.Replace("&", "&");
headname.Replace("<", "<");
headname.Replace(">", ">");
headname.Replace("\"", """);
headname.Replace("'", "'");
textWriter.WriteStartElement("MetadataName", "");
textWriter.WriteString(headname);
textWriter.WriteEndElement();
我遇到的问题是,在经过for循环一次之后,我得到一个'状态Epilog中的Token StartElement将导致无效的XML文档'错误就行了WriteStartElement,我试过看了如何解决它并没有真正有任何突破。感谢。
已获得更新。
答案 0 :(得分:7)
XML文档将具有根元素,即包含所有其他元素的元素。你没有一个
您的文档就像
<MetadataName><header0/><header1/></MetadataName>
<MetadataName><header0/><header1/></MetadataName>
XML文档就像
<root>
<MetadataName><header0/><header1/></MetadataName>
<MetadataName><header0/><header1/></MetadataName>
</root>
你需要在循环
周围使用WriteStartElement和WriteEndElement答案 1 :(得分:6)
你的问题在这里:
textWriter.WriteStartElement("Metadata Name", "");
元素名称不能包含空格。试试这个:
textWriter.WriteStartElement("MetadataName", "");
我假设您的headers
数组中的数据格式适用于XML(例如,所有&
都转义为&
等等。)
此外,正如Mark在他的回答中所说,你需要确保XML是有根的 - 也就是说,有一个根元素可以放置你的MetadataName
元素。
了解well formed XML以及这意味着什么 - 在构建文档时,您需要确保文档格式正确。