我有一系列由C#中的XMLWriter寫出的設置。這裏有一些代碼:如何獲取正在由XMLWriter寫入的當前項目
try
{
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
settings.IndentChars = (" ");
using (writer = XmlWriter.Create("PCOB2NET.XML", settings))
{
// Write XML data.
writer.WriteStartElement("PowerCOBOL2NETMigration");
writer.WriteStartElement("config");
writer.WriteElementString("VSVersion", selectedVSver);
writer.WriteElementString("path2SelectedVSVerProjects", path2SelectedVSVerProjects);
if (path2VSoverridden)
writer.WriteElementString("path2VSoverridden", "true");
else
writer.WriteElementString("path2VSoverridden", "false");
writer.WriteElementString("path2PRCfile", path2PRCfile);
writer.WriteElementString("path2XMLfile", path2XMLfile);
writer.WriteElementString("path2VSProject", path2VSProject);
...等等。 我的問題是,如果有一個異常(例如像一個空字段),它會進入catch塊並按照我們的預期報告異常,但我不知道當時它正在寫入哪個字段。
我的問題:
有什麼辦法,我可以得到當前字符串被寫入,發生異常時?我搜索了網頁沒有成功,我翻閱了XMLWriter的所有屬性和方法,但是我找不到一種方法來完成它。是否可能有某種類型的異常陷阱會將它提供給我?任何幫助或想法表示讚賞。
我是LINQ的粉絲,所以我很想看到你發佈的代碼。謝謝。但是,我不確定這是如何解決我的實際問題。我當然可以將設置作爲塊添加到XML文件中,但是如果出現錯誤(如空字段),它可能仍會給我不正確的XML,我仍然不知道哪個字段導致了問題。即使我設法寫入文件沒有問題,無論讀取它將不得不處理它,所以我認爲它只是移動問題。應該拋出異常是正確的。我的問題是知道WHICH字段導致它被拋出。 – Morepork
你永遠不應該有一個空例外。這是一個編程錯誤,應該在應用程序發佈之前解決。使用XmlWriter不是首選的方法。你必須適當平衡開放標籤和結束標籤。 Linq結束標籤會自動處理。 – jdweng
是的,你是對的。它引發錯誤,因爲字段中有一個x00字符,而不是因爲該字段爲空。我試過空字段,他們工作得很好。 – Morepork