Xml序列化程序未反序列化到数组C#ASP.NET
您好,我正在使用XML序列化程序对.NET中web服务传入的XML进行反序列化 我使用XSD.exe创建了一个序列化类 我有一个间歇性的问题,有时XML不能正确地反序列化 在XML文件中,有一个Result的根元素,它有一个子元素Transactions,这是多个Transaction元素的集合,但是有时反序列化时,即使XML中存在多个元素,也只创建1个元素 由于它是间歇性的,我最初的想法是XML是不同的,但事实并非如此 这是我的密码: 反序列化类Xml序列化程序未反序列化到数组C#ASP.NET,c#,.net,xml,serialization,.net-4.5,C#,.net,Xml,Serialization,.net 4.5,您好,我正在使用XML序列化程序对.NET中web服务传入的XML进行反序列化 我使用XSD.exe创建了一个序列化类 我有一个间歇性的问题,有时XML不能正确地反序列化 在XML文件中,有一个Result的根元素,它有一个子元素Transactions,这是多个Transaction元素的集合,但是有时反序列化时,即使XML中存在多个元素,也只创建1个元素 由于它是间歇性的,我最初的想法是XML是不同的,但事实并非如此 这是我的密码: 反序列化类 public partial class Re
public partial class Result
{
private ResultTransaction[] transactionsField;
/// <remarks/>
[System.Xml.Serialization.XmlArrayItem("Transaction")]
public ResultTransaction[] Transactions
{
get
{
return this.transactionsField;
}
set
{
this.transactionsField = value;
}
}
}
/// <remarks/>
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
public partial class ResultTransaction
{
private ResultTransactionSequence sequenceField;
private ResultTransactionActivity activityField;
private System.DateTime issuedField;
private ResultTransactionUser userField;
private string notesField;
}
示例XML:
<Result>
<Transactions>
<Transaction>
<sequence>
<transactiontype>Customer</transactiontype>
</sequence>
<Customer>
</Customer>
</Transaction>
<Transaction>
<sequence>
<transactiontype>Customer</transactiontype>
</sequence>
<Customer>
</Customer>
</Transaction>
<Transactions>
</Result>
顾客
顾客
有人知道这是为什么吗,因为它让我发疯了,所以您有时能够正确地反序列化XML,但不总是这样吗?你能提供一个通过和失败的XML的例子吗,或者XML与通过和失败的XML完全相同吗?是的,有时它工作正常,有时它不正常,XML完全相同,比如说有6个事务,有时它将反序列化为6个数组,而其他时候它只执行第一个事务,而忽略其余事务,没有模式问题中的XML是一个基本示例,我删除了各种字段以尝试隔离问题。我在XML序列化程序中遇到了类似的问题,我发现XML序列化程序在反序列化时遇到错误时停止。它不会警告您或任何您只丢失一个数组的内容。您必须查看每种情况下的特定XML,以查看是否存在错误。如果同一个Xml可以遍历并给出不同的结果,那么这可能是另一个问题。但我会非常严格地要求对XML进行同样的调用。尝试先编写一个XSD来验证您的XML,它会显示您的XML在哪里被破坏,这样您就可以获得更多信息。我希望您不会这么说,我要求web服务提供商向我提供一个XSD文件,但他们无法提供,所以我似乎必须创建一个@thinklarge谢谢,我假设这是XML序列化程序中的一个错误,但我认为它会告诉您这一点
<Result>
<Transactions>
<Transaction>
<sequence>
<transactiontype>Customer</transactiontype>
</sequence>
<Customer>
</Customer>
</Transaction>
<Transaction>
<sequence>
<transactiontype>Customer</transactiontype>
</sequence>
<Customer>
</Customer>
</Transaction>
<Transactions>
</Result>