2011-03-01 43 views
0

嗨我想通過合併它與字符串從Excel文件處理多個XML文件。這是它是如何寫在我的代碼System.ArgumentException:無法寫入XML聲明。 WriteStartDocument方法已經寫了

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

好的 - 致電doc.Save將嘗試再次啓動文檔。

你有沒有考慮調用:

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

或者只是刪除電話xmlwriter.WriteStartDocument ......這並不完全清楚你爲什麼這樣做首先。

(你也應該使用using語句xmlwriter,並在方法結束時去除沒有意義的任務爲null)。

+0

我認爲做的伎倆感謝!此外,我不認爲有一個EndDocument函數的XmlDocument類 – 2011-03-01 12:39:58

+0

我有一個後續問題使用DocumentElement.WriteTo保存xmlwriter的內容到加載的XML文檔在文檔中還是不是? – 2011-03-01 12:46:56

+0

@csharp員工:不,它將*文檔*的內容保存到* writer *中。作家是你*寫東西給*的東西。沒有「xmlwriter的內容」這樣的概念。 – 2011-03-01 12:52:01