首页 > 解决方案 > C# 反序列化 xml 错误 ReadElementContentAs() 方法不能在具有子元素的元素上调用

问题描述

我已经查看了几个类似的 SO 问题,但仍然无法解决我的问题。

使用以下代码我尝试反序列化:

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

    return post ?? new QCOrderInfo();
   }

产生的错误:

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

发布的代码太多,但查看工作中的 dotnetfiddle: https ://dotnetfiddle.net/pRCWQh

标签: c#xmlxml-parsing

解决方案


您批准的评估员未正确反序列化。

所以添加一个类

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

并改变

public string[] ApprovedAppraisers { get; set; }

public ApprovedAppraisers[] ApprovedAppraisers { get; set; }

推荐阅读