Deserializing classes from XML generated using XSD.exe
        Posted  
        
            by heap
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by heap
        
        
        
        Published on 2010-05-04T12:24:58Z
        Indexed on 
            2010/05/04
            12:28 UTC
        
        
        Read the original article
        Hit count: 442
        
I have classes generated (using xsd.exe) from an .xsd that I can serialize just fine, but when I try and deserialize it, I get the error:
{"<XMLLanguages xmlns='http://tempuri.org/XMLLanguages.xsd'> was not expected."}
I've searched for a couple of hours and found most peoples problems lie in not declaring namespaces in their xsd/xml, not defining namespaces in their classes, etc, but I can't find a solution for my problem.
Here are code snippets for the relevant classes.
    <?xml version="1.0" encoding="utf-8"?>
<xs:schema id="SetupData"
    targetNamespace="http://tempuri.org/XMLLanguages.xsd"
    elementFormDefault="qualified"
    xmlns="http://tempuri.org/XMLLanguages.xsd"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
>
  <xs:element name="XMLLanguages">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Tier" minOccurs="1" maxOccurs="unbounded">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="L" minOccurs="1" maxOccurs="unbounded" type="Language"/>
            </xs:sequence>
            <xs:attribute name="TierID" type="xs:int"/>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:complexType name="Language">
    <xs:sequence>
      <xs:element name="LangID" type="xs:int"/>
      <xs:element name="Tier" type="xs:int"/>
      <xs:element name ="Name" type="xs:string"/>
    </xs:sequence>
    <xs:attribute name ="PassRate" type="xs:int"/>
  </xs:complexType>
</xs:schema>
And the class:
    /// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://tempuri.org/XMLLanguages.xsd")]
[System.Xml.Serialization.XmlRootAttribute(Namespace = "http://tempuri.org/XMLLanguages.xsd", IsNullable = false)]
public partial class XMLLanguages
{
    private List<XMLLanguagesTier> tierField;
    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute("Tier")]
    public List<XMLLanguagesTier> Tiers {
        get {
            return this.tierField;
        }
        set {
            this.tierField = value;
        }
    }
}
And a the line in XML causing the error:
<XMLLanguages xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://tempuri.org/XMLLanguages.xsd">
© Stack Overflow or respective owner