c# - Xml 反序列化在空元素上失败

标签 c# xml exception serialization

我有一个看起来也很相似的 Xml 文档

<Reports xmlns="">
  <Report>
    <ReportID>1</ReportID>
    <ParameterTemplate />
  </Report>
</Reports>

序列化到这个对象失败

[XmlType(TypeName = "Report")]
public class Report
{
    [XmlElement("ReportID")]
    public int ID { get; set; }

    [XmlElement("ParameterTemplate")]
    public XElement ParameterTemplate { get; set; }
}

它失败是因为空的 ParameterTemplate 元素,因为如果它包含子元素,它可以很好地反序列化。

我怎样才能让它工作?

这是我的反序列化代码

var serializer = new XmlSerializer(typeof(Report));
return (Report)serializer.Deserialize(source.CreateReader());

异常(exception)情况是

The XmlReader must be on a node of type Element instead of a node of type EndElement.

我怎样才能用现有的 xml 反序列化它?

谢谢 -c

最佳答案

看起来 XElement 的内容 - 如果不是 null - 不能是空的 XML 元素。换句话说,您将无法从 Report 类的内存表示/实例中序列化示例中的那个 XML。

关于c# - Xml 反序列化在空元素上失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2201358/

相关文章:

C# - 为什么要实现标准异常构造函数?

c# - 为什么我在 listView1 上没有属性项?

sql - 从 Android 访问 SQL 数据库?

mysql - 如何使用 XSL 模板清理 Mysql 查询?

python - 如何捕获 Try/Catch Block Python 中的所有异常?

c# - 源阵列不够长。检查 srcIndex 和长度,以及数组的下限

c#:脉冲并等待

c# - 有什么方法可以在没有 "/Rect"的情况下获得 AcroField 在 PdfSharp 中的位置?

c# - 分块下载文件 (Windows Phone)

python - 如何在 Python 中获取 xml 文件的根节点?