【发布时间】:2018-04-16 11:21:12
【问题描述】:
如何正确反序列化我的示例中的 XML(看最后的问题)?我这样做对吗?或许有办法让它变得更简单、更高效?
XML:
<Warehouse>
<GUID>0d63057d-99e8-11e6-813b-0003ff000011</GUID>
<Name>WarehouseName</Name>
<Terms>
<Term TargetGUID="490ecabf-f011-11e3-b7d9-6c626dc1e098">2</Term>
<Term TargetGUID="f332d7ff-efd2-11e3-b7d9-6c626dc1e098">4</Term>
</Terms>
</Warehouse>
C#: Warehouse.cs:
[Serializable]
public class Warehouse
{
[XmlArray("Terms", IsNullable=true)]
[XmlArrayItem("Term")]
public WarehouseTransferTerm[] TransferTerms { get; set; }
[XmlElement(ElementName="Name")]
public string InternalName { get; set; }
[XmlElement(ElementName="Guid")]
public Guid Guid { get; set; }
}
WarehouseTransferTerm.cs:
[Serializable]
public class WarehouseTransferTerm
{
public Guid SourceWarehouseGuid { get; set; }
[XmlAttribute(AttributeName = "TargetGUID")]
public Guid TargetWarehouseGuid { get; set; }
[XmlElement(ElementName="Term")]
public int TransferTermInDays { get; set; }
}
问题:如何将 Warehouse 的 GUID 属性值设置为 SourceWarehouseGuid?
【问题讨论】:
-
序列化/反序列化有四个基本类 1) XML 序列化 2) XmlDocument 3) XDocument 4) XmlReader/XmlWriter。最好的选择取决于 XML 的大小、需要提取的数据量、要读取/写入的类的数量以及 xml 的结构。您没有给出足够的要求来确定“最佳”方法。
-
@john SourceWarehouseGuid 必须是仓库的 GUID 属性值mykmyk.pet/2H5W4w8
-
@jdweng 好的,如何将 Warehouse 的 GUID 属性值设置为 SourceWarehouseGuid?
-
我想您在反序列化 TransferTermInDays 属性时会遇到问题,因为它是父元素的值,而不是内部 XML 元素“Term”的值...
-
我更新了代码。