c# - 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
解决方案
您批准的评估员未正确反序列化。
所以添加一个类
[Serializable]
public class ApprovedAppraisers
{
[XmlElement(ElementName = "Appraiser")]
public string Appraiser { get; set; }
}
并改变
public string[] ApprovedAppraisers { get; set; }
至
public ApprovedAppraisers[] ApprovedAppraisers { get; set; }
推荐阅读
- python - 如何使用熊猫数据框爆炸多个列
- spring - Spring Session 使用什么算法生成会话 id
- postgresql - 带有 GraphQl 关系数据的 Gatsby/Strapi 不会在页面上填充
- javascript - 从 Cordova iOS 应用程序从网站下载文件
- python - 使用 python 在 Pushbullet 中读取回复
- javascript - 如何从 javascript 中的本地存储中删除元素?
- unity3d - 附加时相机未以游戏对象为中心
- javascript - Google Analytics - 同一台公共计算机上的不同用户具有相同的用户 ID 指标
- python - 如何检查每个可能的组合的有效性?
- python - 自从我的 Try...Ext 无法正常工作后,我应该怎么做?