【发布时间】:2016-09-02 12:13:52
【问题描述】:
我有以下 xml:
<Root>
<ProcessingUnit>Lifestyle</ProcessingUnit>
<ProcessingData>
<ProcessType>Product</ProcessType>
<ProcessAction>Create</ProcessAction>
<Id>7</Id>
</ProcessingData>
</Root>
我有以下对象结构
[XmlRoot("Root")]
public class XmlRoot
{
ProcessingUnit ProcessingUnit { get; set; }
[XmlElement("ProcessingData")]
ProcessingData ProcessingData { get; set; }
}
public class ProcessingData
{
public ProcessType ProcessType { get; set; }
public ProcessAction ProcessAction { get; set; }
public int Id { get; set; }
}
当我反序列化时,我会执行以下操作:
XmlSerializer _serializer = new XmlSerializer(typeof(XmlRoot));
using (var reader = new StringReader(stringtest))
{
var tradeData = (XmlRoot)_serializer.Deserialize(reader);
}
反序列化为枚举工作正常,处理单元已正确反序列化,但属性ProcessingData 是null。
我尝试过使用许多不同的 xml 属性进行装饰,但我不明白为什么我会得到空值。
编辑: stringtest 变量的值为:
var stringtest =
"<Root><ProcessingUnit>Lifestyle</ProcessingUnit><ProcessingData><ProcessType>Product</ProcessType><ProcessAction>Create</ProcessAction><Id>7</Id></ProcessingData></Root>";
枚举看起来像这样:
public enum ProcessType
{
[XmlEnum(Name = "Product")]
Product,
[XmlEnum(Name = "Category")]
Category,
}
public enum ProcessAction
{
[XmlEnum(Name = "Create")]
Create,
[XmlEnum(Name = "Delete")]
Delete,
[XmlEnum(Name = "Update")]
Update,
}
public enum ProcessingUnit
{
[XmlEnum(Name = "LifeStyle")]
LifeStyle
}
【问题讨论】:
-
您确定您的
stringtest包含实际的xml 吗?我看不到您提供的代码有任何错误。 -
被序列化/反序列化的对象需要无参数构造函数。您确定 ProcessingAction 和 ProcessingType 确实提供这些吗?
-
感谢回复,见编辑:)
-
尝试公开
XmlRoot类的属性。 -
将它们公开我现在收到错误“XML 文档 (1, 50) 中存在错误”。这是 ProcessingData 元素开始的地方。奇怪,但现在我想我更接近问题了,谢谢:)
标签: c# xml serialization xml-deserialization