System.ArgumentException:无法编写XML声明。 WriteStartDocument方法已经写好了

时间:2011-03-01 12:24:59

标签: c# xml

您好我正在尝试通过将其与excel文件中的字符串合并来处理多个XML文件。这就是我在代码中编写的方式

try
{
    CXMLProcessing xmlProc = new CXMLProcessing();
    Demo = Demo + 1;
    string OutputData = "";
    string attr = "";
    XmlDocument doc = new XmlDocument();
    doc.Load(fileItem);
    XmlNode node = doc.DocumentElement;
    xmlProc.CreateXML(node, ref OutputData, ref attr, dictionary, textBoxCNFLCID.Text, radioReference.Checked);
    XmlTextWriter xmlwriter = new XmlTextWriter(textOutputCNF.Text + file_Name, fileEncoding);
    xmlwriter.Formatting = Formatting.Indented;
    xmlwriter.WriteStartDocument(true);
    doc.Save(xmlwriter);
    //xmlwriter = null;
    doc = null;
    xmlProc=null;
    xmlwriter.WriteEndDocument();
    return true;
}

由于WriteStartDocument访问它,我似乎无法继续将文件保存到xml中。每次我尝试处理多个文件时都会发生这种情况。有没有办法绕过这个例外?我尝试添加.Close但它仍然得到异常。这是用C#编写的。感谢。

1 个答案:

答案 0 :(得分:1)

是的 - 调用doc.Save会尝试再次启动文档。

您是否考虑过致电:

doc.DocumentElement.WriteTo(xmlwriter);
writer.WriteEndDocument();

或者只是删除对xmlwriter.WriteStartDocument的调用...一开始并不清楚为什么你这样做。

(您还应该为using使用xmlwriter语句,并在方法结束时将无意义的赋值移除为null。)