2014-11-05 25 views
0

当我的控制台应用程序尝试反序列化XML时,会引发此异常。异常错误:不一致的排序:如果用在其中一个类的成员上

Inconsistent sequencing: if used on one of the class's members, the 'Order' property is required on all particle-like members, please explicitly set 'Order' using XmlElement, XmlAnyElement or XmlArray custom attribute on class member 'worksheetReference'.

我尝试反序列化的XML看起来像这样

<?xml version="1.0"?> 
<worksheetReport xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="asm.org.uk/Sequoia/WorksheetReport"> 
    <worksheetRefence> 
    <worksheetReference xmlns="asm.org.uk/Sequoia/WorksheetIdentityType">306</worksheetReference> 
    </worksheetRefence> 
    <WorksheetReportRows> 
    <worksheetReportRow> 
     <worksheetRefence xmlns="asm.org.uk/Sequoia/WorksheetReportData"> 
     <worksheetReference xmlns="asm.org.uk/Sequoia/WorksheetIdentityType">306</worksheetReference> 
     </worksheetRefence> 
     <invoiceNumber xmlns="asm.org.uk/Sequoia/WorksheetReportData">INTEBKKEN00000005672</invoiceNumber> 
     <orderNumber xmlns="asm.org.uk/Sequoia/WorksheetReportData">65406504</orderNumber> 
     <incoTerm xmlns="asm.org.uk/Sequoia/WorksheetReportData">CIF</incoTerm> 
     <incoTermLocation xmlns="asm.org.uk/Sequoia/WorksheetReportData">HEATHROW</incoTermLocation> 
     <lineNumber xmlns="asm.org.uk/Sequoia/WorksheetReportData">1</lineNumber> 
     <lineOrderNumber xmlns="asm.org.uk/Sequoia/WorksheetReportData">111</lineOrderNumber> 
     <productCode xmlns="asm.org.uk/Sequoia/WorksheetReportData">PROD01</productCode> 
     <sku xmlns="asm.org.uk/Sequoia/WorksheetReportData">SKU01</sku> 
     <quantity xmlns="asm.org.uk/Sequoia/WorksheetReportData">1.000</quantity> 
     <unitPrice xmlns="asm.org.uk/Sequoia/WorksheetReportData">94.99</unitPrice> 
     <itemNumber xmlns="asm.org.uk/Sequoia/WorksheetReportData">0</itemNumber> 
     <commodityCode xmlns="asm.org.uk/Sequoia/WorksheetReportData">8302100090</commodityCode> 
     <originCountry xmlns="asm.org.uk/Sequoia/WorksheetReportData">TH</originCountry> 
     <goodsDescription xmlns="asm.org.uk/Sequoia/WorksheetReportData">GOATS CHEESE</goodsDescription> 
     <consignorName xmlns="asm.org.uk/Sequoia/WorksheetReportData">JONATHAN CHAPMAN</consignorName> 
     <consignorStreet xmlns="asm.org.uk/Sequoia/WorksheetReportData">1406 CARALEA VALLEY DR</consignorStreet> 
     <consignorCity xmlns="asm.org.uk/Sequoia/WorksheetReportData">CONCORD</consignorCity> 
     <consignorPostCode xmlns="asm.org.uk/Sequoia/WorksheetReportData">28027</consignorPostCode> 
     <consignorCountry xmlns="asm.org.uk/Sequoia/WorksheetReportData">US</consignorCountry> 
     <consigneeEori xmlns="asm.org.uk/Sequoia/WorksheetReportData">GBPR</consigneeEori> 
     <consigneeName xmlns="asm.org.uk/Sequoia/WorksheetReportData">ALBERTO MARTINEZ GLEZ</consigneeName> 
     <consigneeStreet xmlns="asm.org.uk/Sequoia/WorksheetReportData">PLAZA SAN LORENZO NO2 1O DERECHA</consigneeStreet> 
     <consigneeCity xmlns="asm.org.uk/Sequoia/WorksheetReportData">LEON</consigneeCity> 
     <consigneePostCode xmlns="asm.org.uk/Sequoia/WorksheetReportData">24007</consigneePostCode> 
     <consigneeCountry xmlns="asm.org.uk/Sequoia/WorksheetReportData">ES</consigneeCountry> 
     <aiStatementCode1 xmlns="asm.org.uk/Sequoia/WorksheetReportData">BULKD</aiStatementCode1> 
     <aiStatementText1 xmlns="asm.org.uk/Sequoia/WorksheetReportData">GEO/251LVBI/0916</aiStatementText1> 
     <aiStatementCode2 xmlns="asm.org.uk/Sequoia/WorksheetReportData">LIC99</aiStatementCode2> 
    </worksheetReportRow> 
    <worksheetReportRow> 
     <worksheetRefence xmlns="asm.org.uk/Sequoia/WorksheetReportData"> 
     <worksheetReference xmlns="asm.org.uk/Sequoia/WorksheetIdentityType">306</worksheetReference> 
     </worksheetRefence> 
     <invoiceNumber xmlns="asm.org.uk/Sequoia/WorksheetReportData">INTEBKKEN00000005672</invoiceNumber> 
     <orderNumber xmlns="asm.org.uk/Sequoia/WorksheetReportData">65406504</orderNumber> 
     <incoTerm xmlns="asm.org.uk/Sequoia/WorksheetReportData">CIF</incoTerm> 
     <incoTermLocation xmlns="asm.org.uk/Sequoia/WorksheetReportData">HEATHROW</incoTermLocation> 
     <lineNumber xmlns="asm.org.uk/Sequoia/WorksheetReportData">2</lineNumber> 
     <lineOrderNumber xmlns="asm.org.uk/Sequoia/WorksheetReportData">222</lineOrderNumber> 
     <productCode xmlns="asm.org.uk/Sequoia/WorksheetReportData">PROD02</productCode> 
     <sku xmlns="asm.org.uk/Sequoia/WorksheetReportData">SKU02</sku> 
     <quantity xmlns="asm.org.uk/Sequoia/WorksheetReportData">5.000</quantity> 
     <unitPrice xmlns="asm.org.uk/Sequoia/WorksheetReportData">139.99</unitPrice> 
     <itemNumber xmlns="asm.org.uk/Sequoia/WorksheetReportData">0</itemNumber> 
     <commodityCode xmlns="asm.org.uk/Sequoia/WorksheetReportData">4901910000</commodityCode> 
     <originCountry xmlns="asm.org.uk/Sequoia/WorksheetReportData">TH</originCountry> 
     <goodsDescription xmlns="asm.org.uk/Sequoia/WorksheetReportData">A STICK OF ROCK</goodsDescription> 
     <consignorName xmlns="asm.org.uk/Sequoia/WorksheetReportData">ADAM DANGOOR</consignorName> 
     <consignorStreet xmlns="asm.org.uk/Sequoia/WorksheetReportData">35340 ROAD 603</consignorStreet> 
     <consignorCity xmlns="asm.org.uk/Sequoia/WorksheetReportData">MADERA</consignorCity> 
     <consignorPostCode xmlns="asm.org.uk/Sequoia/WorksheetReportData">93638819</consignorPostCode> 
     <consignorCountry xmlns="asm.org.uk/Sequoia/WorksheetReportData">US</consignorCountry> 
     <consigneeEori xmlns="asm.org.uk/Sequoia/WorksheetReportData">GBPR</consigneeEori> 
     <consigneeName xmlns="asm.org.uk/Sequoia/WorksheetReportData">ALESSANDRO CAMPO</consigneeName> 
     <consigneeStreet xmlns="asm.org.uk/Sequoia/WorksheetReportData">VIALE EVARISTO STEFINI 8 GF FOTOGRA</consigneeStreet> 
     <consigneeCity xmlns="asm.org.uk/Sequoia/WorksheetReportData">MILANO</consigneeCity> 
     <consigneePostCode xmlns="asm.org.uk/Sequoia/WorksheetReportData">20125</consigneePostCode> 
     <consigneeCountry xmlns="asm.org.uk/Sequoia/WorksheetReportData">IT</consigneeCountry> 
     <aiStatementCode1 xmlns="asm.org.uk/Sequoia/WorksheetReportData">BULKD</aiStatementCode1> 
     <aiStatementText1 xmlns="asm.org.uk/Sequoia/WorksheetReportData">GEO/251LVBI/0916</aiStatementText1> 
     <aiStatementCode2 xmlns="asm.org.uk/Sequoia/WorksheetReportData">LIC99</aiStatementCode2> 
    </worksheetReportRow> 
    <worksheetReportRow> 
     <worksheetRefence xmlns="asm.org.uk/Sequoia/WorksheetReportData"> 
     <worksheetReference xmlns="asm.org.uk/Sequoia/WorksheetIdentityType">306</worksheetReference> 
     </worksheetRefence> 
     <invoiceNumber xmlns="asm.org.uk/Sequoia/WorksheetReportData">INTEBKKEN00000005672</invoiceNumber> 
     <orderNumber xmlns="asm.org.uk/Sequoia/WorksheetReportData">65406504</orderNumber> 
     <incoTerm xmlns="asm.org.uk/Sequoia/WorksheetReportData">CIF</incoTerm> 
     <incoTermLocation xmlns="asm.org.uk/Sequoia/WorksheetReportData">HEATHROW</incoTermLocation> 
     <lineNumber xmlns="asm.org.uk/Sequoia/WorksheetReportData">3</lineNumber> 
     <lineOrderNumber xmlns="asm.org.uk/Sequoia/WorksheetReportData">333</lineOrderNumber> 
     <productCode xmlns="asm.org.uk/Sequoia/WorksheetReportData">PROD03</productCode> 
     <sku xmlns="asm.org.uk/Sequoia/WorksheetReportData">SKU03</sku> 
     <quantity xmlns="asm.org.uk/Sequoia/WorksheetReportData">1.000</quantity> 
     <unitPrice xmlns="asm.org.uk/Sequoia/WorksheetReportData">29.99</unitPrice> 
     <itemNumber xmlns="asm.org.uk/Sequoia/WorksheetReportData">0</itemNumber> 
     <commodityCode xmlns="asm.org.uk/Sequoia/WorksheetReportData">4901910000</commodityCode> 
     <originCountry xmlns="asm.org.uk/Sequoia/WorksheetReportData">TH</originCountry> 
     <goodsDescription xmlns="asm.org.uk/Sequoia/WorksheetReportData">A 9 IRON</goodsDescription> 
     <consignorName xmlns="asm.org.uk/Sequoia/WorksheetReportData">HIU YU</consignorName> 
     <consignorStreet xmlns="asm.org.uk/Sequoia/WorksheetReportData">17814 BAINTREE ST</consignorStreet> 
     <consignorCity xmlns="asm.org.uk/Sequoia/WorksheetReportData">ROWLAND HEIGHTS</consignorCity> 
     <consignorPostCode xmlns="asm.org.uk/Sequoia/WorksheetReportData">91748420</consignorPostCode> 
     <consignorCountry xmlns="asm.org.uk/Sequoia/WorksheetReportData">US</consignorCountry> 
     <consigneeEori xmlns="asm.org.uk/Sequoia/WorksheetReportData">GBPR</consigneeEori> 
     <consigneeName xmlns="asm.org.uk/Sequoia/WorksheetReportData">ALLARD</consigneeName> 
     <consigneeStreet xmlns="asm.org.uk/Sequoia/WorksheetReportData">RUE DES PALAIS N55</consigneeStreet> 
     <consigneeCity xmlns="asm.org.uk/Sequoia/WorksheetReportData">BRUSSELS</consigneeCity> 
     <consigneePostCode xmlns="asm.org.uk/Sequoia/WorksheetReportData">1030</consigneePostCode> 
     <consigneeCountry xmlns="asm.org.uk/Sequoia/WorksheetReportData">BE</consigneeCountry> 
     <aiStatementCode1 xmlns="asm.org.uk/Sequoia/WorksheetReportData">BULKD</aiStatementCode1> 
     <aiStatementText1 xmlns="asm.org.uk/Sequoia/WorksheetReportData">GEO/251LVBI/0916</aiStatementText1> 
     <aiStatementCode2 xmlns="asm.org.uk/Sequoia/WorksheetReportData">LIC99</aiStatementCode2> 
    </worksheetReportRow> 
    <worksheetReportRow> 
     <worksheetRefence xmlns="asm.org.uk/Sequoia/WorksheetReportData"> 
     <worksheetReference xmlns="asm.org.uk/Sequoia/WorksheetIdentityType">306</worksheetReference> 
     </worksheetRefence> 
     <invoiceNumber xmlns="asm.org.uk/Sequoia/WorksheetReportData">INTEBKKEN00000005672</invoiceNumber> 
     <orderNumber xmlns="asm.org.uk/Sequoia/WorksheetReportData">65406504</orderNumber> 
     <incoTerm xmlns="asm.org.uk/Sequoia/WorksheetReportData">CIF</incoTerm> 
     <incoTermLocation xmlns="asm.org.uk/Sequoia/WorksheetReportData">HEATHROW</incoTermLocation> 
     <lineNumber xmlns="asm.org.uk/Sequoia/WorksheetReportData">4</lineNumber> 
     <lineOrderNumber xmlns="asm.org.uk/Sequoia/WorksheetReportData">444</lineOrderNumber> 
     <productCode xmlns="asm.org.uk/Sequoia/WorksheetReportData">PROD04</productCode> 
     <sku xmlns="asm.org.uk/Sequoia/WorksheetReportData">SKU04</sku> 
     <quantity xmlns="asm.org.uk/Sequoia/WorksheetReportData">1.000</quantity> 
     <unitPrice xmlns="asm.org.uk/Sequoia/WorksheetReportData">59.99</unitPrice> 
     <itemNumber xmlns="asm.org.uk/Sequoia/WorksheetReportData">0</itemNumber> 
     <commodityCode xmlns="asm.org.uk/Sequoia/WorksheetReportData">8302100090</commodityCode> 
     <originCountry xmlns="asm.org.uk/Sequoia/WorksheetReportData">TH</originCountry> 
     <goodsDescription xmlns="asm.org.uk/Sequoia/WorksheetReportData">A HAT WITH MICKEY MOUSE EARS</goodsDescription> 
     <consignorName xmlns="asm.org.uk/Sequoia/WorksheetReportData">JUAN MAYMI</consignorName> 
     <consignorStreet xmlns="asm.org.uk/Sequoia/WorksheetReportData">6724 PERIMETER LOOP RD</consignorStreet> 
     <consignorCity xmlns="asm.org.uk/Sequoia/WorksheetReportData">DUBLIN</consignorCity> 
     <consignorPostCode xmlns="asm.org.uk/Sequoia/WorksheetReportData">43017320</consignorPostCode> 
     <consignorCountry xmlns="asm.org.uk/Sequoia/WorksheetReportData">US</consignorCountry> 
     <consigneeEori xmlns="asm.org.uk/Sequoia/WorksheetReportData">GBPR</consigneeEori> 
     <consigneeName xmlns="asm.org.uk/Sequoia/WorksheetReportData">ANDERS THORESSON</consigneeName> 
     <consigneeStreet xmlns="asm.org.uk/Sequoia/WorksheetReportData">TRKILSGATAN 13A</consigneeStreet> 
     <consigneeCity xmlns="asm.org.uk/Sequoia/WorksheetReportData">GTEBORG</consigneeCity> 
     <consigneePostCode xmlns="asm.org.uk/Sequoia/WorksheetReportData">416 78</consigneePostCode> 
     <consigneeCountry xmlns="asm.org.uk/Sequoia/WorksheetReportData">SE</consigneeCountry> 
     <aiStatementCode1 xmlns="asm.org.uk/Sequoia/WorksheetReportData">BULKD</aiStatementCode1> 
     <aiStatementText1 xmlns="asm.org.uk/Sequoia/WorksheetReportData">GEO/251LVBI/0916</aiStatementText1> 
     <aiStatementCode2 xmlns="asm.org.uk/Sequoia/WorksheetReportData">LIC99</aiStatementCode2> 
    </worksheetReportRow> 
    <worksheetReportRow> 
     <worksheetRefence xmlns="asm.org.uk/Sequoia/WorksheetReportData"> 
     <worksheetReference xmlns="asm.org.uk/Sequoia/WorksheetIdentityType">306</worksheetReference> 
     </worksheetRefence> 
     <invoiceNumber xmlns="asm.org.uk/Sequoia/WorksheetReportData">INTEBKKEN00000005672</invoiceNumber> 
     <orderNumber xmlns="asm.org.uk/Sequoia/WorksheetReportData">65406504</orderNumber> 
     <incoTerm xmlns="asm.org.uk/Sequoia/WorksheetReportData">CIF</incoTerm> 
     <incoTermLocation xmlns="asm.org.uk/Sequoia/WorksheetReportData">HEATHROW</incoTermLocation> 
     <lineNumber xmlns="asm.org.uk/Sequoia/WorksheetReportData">5</lineNumber> 
     <lineOrderNumber xmlns="asm.org.uk/Sequoia/WorksheetReportData">555</lineOrderNumber> 
     <productCode xmlns="asm.org.uk/Sequoia/WorksheetReportData">PROD05</productCode> 
     <sku xmlns="asm.org.uk/Sequoia/WorksheetReportData">SKU05</sku> 
     <quantity xmlns="asm.org.uk/Sequoia/WorksheetReportData">1.000</quantity> 
     <unitPrice xmlns="asm.org.uk/Sequoia/WorksheetReportData">127.50</unitPrice> 
     <itemNumber xmlns="asm.org.uk/Sequoia/WorksheetReportData">0</itemNumber> 
     <commodityCode xmlns="asm.org.uk/Sequoia/WorksheetReportData">4901910000</commodityCode> 
     <originCountry xmlns="asm.org.uk/Sequoia/WorksheetReportData">TH</originCountry> 
     <goodsDescription xmlns="asm.org.uk/Sequoia/WorksheetReportData">A SMALL TUB OF RAISINS</goodsDescription> 
     <consignorName xmlns="asm.org.uk/Sequoia/WorksheetReportData">JASON HUEY</consignorName> 
     <consignorStreet xmlns="asm.org.uk/Sequoia/WorksheetReportData">65 SIEGFREID RD</consignorStreet> 
     <consignorCity xmlns="asm.org.uk/Sequoia/WorksheetReportData">BERNVILLE</consignorCity> 
     <consignorPostCode xmlns="asm.org.uk/Sequoia/WorksheetReportData">19506</consignorPostCode> 
     <consignorCountry xmlns="asm.org.uk/Sequoia/WorksheetReportData">US</consignorCountry> 
     <consigneeEori xmlns="asm.org.uk/Sequoia/WorksheetReportData">GBPR</consigneeEori> 
     <consigneeName xmlns="asm.org.uk/Sequoia/WorksheetReportData">ANDRE SANTOS</consigneeName> 
     <consigneeStreet xmlns="asm.org.uk/Sequoia/WorksheetReportData">AVENIDA PRAIA DA VITORIA</consigneeStreet> 
     <consigneeCity xmlns="asm.org.uk/Sequoia/WorksheetReportData">LISBOA</consigneeCity> 
     <consigneePostCode xmlns="asm.org.uk/Sequoia/WorksheetReportData">1000245</consigneePostCode> 
     <consigneeCountry xmlns="asm.org.uk/Sequoia/WorksheetReportData">PT</consigneeCountry> 
     <aiStatementCode1 xmlns="asm.org.uk/Sequoia/WorksheetReportData">BULKD</aiStatementCode1> 
     <aiStatementText1 xmlns="asm.org.uk/Sequoia/WorksheetReportData">GEO/251LVBI/0916</aiStatementText1> 
     <aiStatementCode2 xmlns="asm.org.uk/Sequoia/WorksheetReportData">LIC99</aiStatementCode2> 
    </worksheetReportRow> 
    </WorksheetReportRows> 
</worksheetReport> 

而且我的课是

namespace FreightSolutions 
{ 
    public class GetWorksheetByRef : ISequoiaApiDualChannelServiceCallback 
    { 
     public void PublishMessage(PublishedMessage message) 
     { 
      //Console.WriteLine(message.EventName); 
     } 

       public static TObject DeserializeFromXml<TObject>(string xml) 
     { 

      using (StringReader stringReader = new StringReader(xml)) 
      { 
       XmlSerializer serializer = new XmlSerializer(typeof(TObject)); 
       return ((TObject)(serializer.Deserialize(System.Xml.XmlReader.Create(stringReader)))); 
      } 
     } 

     //Main class method 
     public void getWorksheetData(BuildWorksheetXML buildXml) 
     { 

      GetDeclarationResponseData apiCallBack = new GetDeclarationResponseData(); 
      SequoiaApiDualChannelServiceClient client = new SequoiaApiDualChannelServiceClient(new InstanceContext(apiCallBack)); 

      //Logon to Seqioia 
      SequoiaLogonResponse loginResponse = client.Logon(new SequoiaLogonRequest { UserName = "api", Password = "api" }); 

      //Pass in reaquest Xml to local varialbe   
      string sendWorksheetInfo = buildXml.GenerateWorksheetXml; 


      //Return response to local variale 
      SequoiaApiResponse returnWorksheetData = client.GetWorksheetReport(new ServiceReference1.LookUpRequest { Content = sendWorksheetInfo }); 

      if (returnWorksheetData != null) 
      { 

       //worksheetReport myWorksheetReportResponse = DeserializeFromXml<worksheetReport>(returnWorksheetData.ToString()); 

       XmlSerializer xmlSerializer = new XmlSerializer(typeof(worksheetReport)); 
       MemoryStream memStream = new MemoryStream(Encoding.UTF8.GetBytes(returnWorksheetData.ReturnValue)); 

       worksheetReport myWorksheetReportResponse = (worksheetReport)xmlSerializer.Deserialize(memStream); 

       foreach (var worksheetReportitem in myWorksheetReportResponse.WorksheetReportRows) 
       { 
        Console.WriteLine(
@" WORKSHEEET RETURN DATA FOR REFERENCE: {0} 
Trader Ref: {1} 
", 
       myWorksheetReportResponse.worksheetRefence, 
       worksheetReportitem.traderReference 
            ); 

        Console.ReadLine(); 

       } } 
     } 
    } 
} 

这是通过XSD2Code自动创建WorkSheetReportClass是

namespace FreightSolutions { 
    using System; 
    using System.Diagnostics; 
    using System.Xml.Serialization; 
    using System.Collections; 
    using System.Xml.Schema; 
    using System.ComponentModel; 
    using System.Collections.Generic; 


    public partial class worksheetReport { 

     private worksheetIdentityType worksheetRefenceField; 

     private List<worksheetReportData> worksheetReportRowsField; 

     public worksheetIdentityType worksheetRefence { 
      get { 
       return this.worksheetRefenceField; 
      } 
      set { 
       this.worksheetRefenceField = value; 
      } 
     } 

     [System.Xml.Serialization.XmlArrayAttribute(Order=1)] 
     [System.Xml.Serialization.XmlArrayItemAttribute("worksheetReportRow", IsNullable=false)] 
     public List<worksheetReportData> WorksheetReportRows { 
      get { 
       return this.worksheetReportRowsField; 
      } 
      set { 
       this.worksheetReportRowsField = value; 
      } 
     } 
    } 
} 

回答

0

当从XSD2Code生成代码时,我必须设置GenerateOrderXMLProperties

相关问题