2011-05-09 66 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