2011-05-09 64 views
1

我有一個應用程序從數據庫中讀取記錄並將其導出到一個xml文件。有一個xsd提供了xml文件的模式。我使用xsd代理類來將數據序列化到xml文件。XML串行器跳過行

這是我如何將數據序列化到XML:

XmlSerializer serializer = new XmlSerializer(_report.GetType()); 
StringBuilder xmlString = new StringBuilder(); 
StringWriter writer = new StringWriter(xmlString); 
serializer.Serialize(writer, _report); 
XmlDocument doc = new XmlDocument(); 
doc.LoadXml(xmlString.ToString()); 
doc.Save(_outputFile.FullName); 

我遇到的問題是,在輸出文件有丟失的行。我經歷了調試,發現數據正在從數據庫添加到代理對象的集合中,並通過'_report'對象傳遞給序列化程序。

因此,爲了隔離數據或應用程序的問題,我手工編寫了一些缺失的記錄到csv文件中,並將數據導入到我的應用程序中。這些記錄現在出現在xml文件中。所以,現在我知道這是一個數據問題。該應用程序使用informix數據庫作爲後端。

我不明白的是,爲什麼informix數據庫中同一個表中的某些行存在,而其他的行不存在?我已經花了近2-3天的時間瀏覽互聯網,沒有任何成功。所以,我認爲是時候把它變成一個缺口。

+0

你可以與我們分享xsd嗎?我猜猜問題出在哪裏。另外,您是如何生成「代理對象」_report的?是通過XSD.EXE還是其他方法? xsd實際上是一個數據集嗎? – code4life 2011-05-09 15:05:50

回答

0

2天前我有類似的問題。

嘗試添加

writer.Flush(); 

你叫

xmlString.ToString()); 

這是解決my problem的解決方案之前。

+0

感謝您的指針。我在第5行和第6行之間插入'writer.Flush()'沒有任何成功。 – Skadoosh 2011-05-09 15:11:34