【发布时间】:2023-03-30 08:31:02
【问题描述】:
我有一个看起来也很相似的 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());
例外是
XmlReader 必须位于 Element 类型的节点上,而不是 EndElement 类型的节点上。
如何使用现有的 xml 进行反序列化?
谢谢 -c
【问题讨论】:
-
出于兴趣,如果是
<ParameterTemplate></ParameterTemplate>可以正常工作吗? -
否,但完全删除它确实允许它序列化。
-
那么您到底想在 XML 文件中的
XElement中存储什么?好像有点奇怪..... -
@marc_s,它更像是 XML,但不像 XML 文件的其余部分那样“强类型”。如果报表没有参数,甚至不需要。
-
为什么不直接添加 [XmlElement(IsNullable=true)]
标签: c# xml exception serialization