解析XML文件时无法跟踪误差源

这是代码:

var serializer = new DataContractSerializer(typeof(QuoteAndOfferCollection)); try { using (var file = File.OpenRead(filename)) { offers = (QuoteAndOfferCollection)serializer.ReadObject(file); } } catch (SerializationException sex) { File.AppendAllText(log, "Deserialization failed - " + sex); return; }

这是我的错误:

xmlDeserialization failed - System.Runtime.Serialization.SerializationException: There was an error deserializing the object of type Services.Dto2.QuoteAndOfferCollection. The value '' cannot be parsed as the type 'Int32'. ---> System.Xml.XmlException: The value '' cannot be parsed as the type 'Int32'. ---> System.FormatException: Input string was not in a correct format. at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal) at System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info) at System.Xml.XmlConvert.ToInt32(String s) at System.Xml.XmlConverter.ToInt32(String value)

我不能够追踪''的一部分

--------------解决方案-------------

捕获异常,并获得价值file.Position 。 这会给你的所在文件中的不良行是一些想法。 如果你环绕的自定义数据流可以做得比这更好FileStream ,并保持多项轨道线读取。

您可能还可以创建一个XmlReader ,并传递到ReadObject 。 当你捕捉异常,检查了读者的属性。 它可能会告诉你到底哪一行有错误。

但是,你需要移动的地方将抛出异常。 即,而不是:

try
{
using (stream)
{
// deserialize
}
}
catch
{
}

你要这样写:

using (stream)
{
try
{
// deserialize
}
catch
{
}
}

分类:C# 时间:2012-07-18 人气:0
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.866 (s). 10 q(s)