The element has invalid child element
.NET found a child element the schema does not allow at that point: out of order, misspelt, or in another namespace.
The element 'order' has invalid child element 'qty'. List of possible elements expected: 'id'.
Why it happens
- Elements in a different order than the schema's
xs:sequence: the order matters. - A namespace mismatch, when the names look identical. .NET writes a namespaced name as
'id' in namespace 'urn:example': if the expected element has a namespace and the one in the document has none (a missingxmlns="…"), they don't match. - An element the schema doesn't allow there at all. Without a List of possible elements expected, nothing more is allowed in the parent at that point.
How to fix it
The list names what the schema accepts at that point: move the element there, add the one that is missing before it, or compare namespaces. With XmlSerializer, check the Namespace of [XmlRoot] and [XmlElement] and the Order of the properties.
.NET throws an XmlSchemaValidationException at the first schema error unless XmlReaderSettings.ValidationEventHandler is set, which then receives every one with its line and position. A well-formedness error is an XmlException and ends reading whatever the settings.
The same problem in xmlvalid
xmlvalid validates with libxml2, which reports it as This element is not expected. It checks the whole document in your browser and lists every schema error with its line and column, not only the first.
Element 'qty': This element is not expected. Expected is ( id ).
Example
Validated against order.xsd, below. In order.xsd, id must come before qty.
<order currency="EUR">
<qty>1</qty>
<id>A-1</id>
</order>
<order currency="EUR">
<id>A-1</id>
<qty>1</qty>
</order>
order.xsd
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="order">
<xs:complexType>
<xs:sequence>
<xs:element name="id" type="xs:string"/>
<xs:element name="qty" type="xs:int"/>
<xs:element name="status" type="Status" minOccurs="0"/>
<xs:element name="code" type="Code" minOccurs="0"/>
<xs:element name="note" type="Short" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="currency" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<xs:simpleType name="Status">
<xs:restriction base="xs:string">
<xs:enumeration value="open"/>
<xs:enumeration value="paid"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="Code">
<xs:restriction base="xs:string">
<xs:pattern value="[A-Z]{3}-[0-9]{4}"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="Short">
<xs:restriction base="xs:string">
<xs:maxLength value="10"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>