Xml序列化程序未反序列化到数组C#ASP.NET

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

您好,我正在使用XML序列化程序对.NET中web服务传入的XML进行反序列化

我使用XSD.exe创建了一个序列化类

我有一个间歇性的问题,有时XML不能正确地反序列化

在XML文件中,有一个Result的根元素,它有一个子元素Transactions,这是多个Transaction元素的集合,但是有时反序列化时,即使XML中存在多个元素,也只创建1个元素

由于它是间歇性的,我最初的想法是XML是不同的,但事实并非如此

这是我的密码:

反序列化类

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>