C# deserialize xml error ReadElementContentAs() methods cannot be called on an element that has child elements

不想你离开。 提交于 2021-01-29 11:25:43

问题


I've looked at several similar SO questions but still can't solve my issue.

Using the following code I try to deserialize:

  private static QCOrderInfo GetOrderFromXml(XDocument xmlDoc){
    XmlSerializer serializer = new XmlSerializer(typeof(QCOrderInfo));
    var post = 
    (QCOrderInfo)serializer.Deserialize(xmlDoc.Root.CreateReader());

    return post ?? new QCOrderInfo();
   }

The error resulting:

  System.Xml.XmlException: ReadElementContentAs() methods cannot be called on an element that has child elements.
  at System.Xml.XmlReader.SetupReadElementContentAsXxx(String methodName)

Too much code to post but view working dotnetfiddle: https://dotnetfiddle.net/pRCWQh


回答1:


Your appoved appraisers are not getting deserialized properly.

So add a class

[Serializable]
    public class ApprovedAppraisers
    {
        [XmlElement(ElementName = "Appraiser")]
        public string Appraiser { get; set; }
    }

And change

public string[] ApprovedAppraisers { get; set; }

to

public ApprovedAppraisers[] ApprovedAppraisers { get; set; }


来源:https://stackoverflow.com/questions/57380238/c-sharp-deserialize-xml-error-readelementcontentas-methods-cannot-be-called-on

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!