简体   繁体   中英

XML Deserialization Error in C# - InvalidOperationException: <element xmlns='http://www.w3.org/2001/XMLSchema'> was not expected

I call a customer's web service. And it is return a XMLElement. I want to deserialize this result but I got an error:

InvalidOperationException: <element xmlns='http://www.w3.org/2001/XMLSchema'> was not expected.

I try like below:

XElement root = XElement.Parse(result.OuterXml);
var query = root.Descendants().FirstOrDefault(r => r.FirstAttribute != null && r.FirstAttribute.Value == "ZER_ENTEGRASYON");
XmlSerializer XML = new XmlSerializer(typeof(ZerDataList));

using (var reader = new StringReader(query.ToString()))
{
    var serializer = new XmlSerializer(typeof(ZerDataList));
    var someTest = serializer.Deserialize(reader) as ZerDataList;
}

result.OuterXml:

<xs:element name="ZER_ENTEGRASYON" msdata:IsDataSet="true" msdata:UseCurrentLocale="true" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:complexType>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
      <xs:element name="ZER_DAYSYIKTRANSIT">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIPARIS_ID" type="xs:int" minOccurs="0" />
            <xs:element name="BOLUM_ID" type="xs:int" minOccurs="0" />
            <xs:element name="SORUMLU" type="xs:string" minOccurs="0" />
            <xs:element name="SAP_SIPARIS_NO" type="xs:string" minOccurs="0" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:choice>
  </xs:complexType>
</xs:element>

ZerDataList:

[Serializable()]
[System.Xml.Serialization.XmlRoot("ZER_ENTEGRASYON")]
[System.Xml.Serialization.XmlTypeAttribute("element",Namespace = "http://www.w3.org/2001/XMLSchema")]
public class ZerDataList 
{
    [XmlElement("ZER_DAYSYIKTRANSIT")]
    public ZerData[] ZerData { get; set; }
}
[Serializable()]
public class ZerData
{       
    [XmlElement("SIPARIS_ID")]
    public int SIPARIS_ID { get; set; }
    [XmlElement("BOLUM_ID")]
    public int BOLUM_ID { get; set; }
    [XmlElement("SORUMLU")]
    public string SORUMLU { get; set; }
    [XmlElement("SAP_SIPARIS_NO")]
    public string SAP_SIPARIS_NO { get; set; }
 }

Any help will be much appreciated.

The issue is here:

[System.Xml.Serialization.XmlTypeAttribute("element",Namespace = "http://www.w3.org/2001/XMLSchema")]

a namespace cannot be mapped as an element, because it is not an element. thus the error:

InvalidOperationException: http://www.w3.org/2001/XMLSchema'> was not expected.

you should use it like this:

   [XmlElement(
   Namespace = "http://www.cpandl.com")]

taken from Microsoft docs .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM