【发布时间】:2014-05-08 20:06:39
【问题描述】:
我使用 C# 反序列化 XML 文件。我的 XML 文件格式为:
<Produced_by >
<Producing_Unit>
<Unit ID="" Name=""/>
</Producing_Unit>
</Produced_by>
当反序列化我想删除中间人Producing_Unit。因为 Produced_by 将始终只包含一个子元素 Producing_Unit 来指定 Unit。 我对如何实施的最初想法不起作用:
public class Unit
{
public string Name { get; set; }
public string ID { get; set; }
}
public class Produced_by
{
[XmlElement("Producing_Unit")]
[XmlElement("Unit")]
public Unit Unit { get; set; }
}
可以使用 [XmlArray("Producing_Unit"), XmlArrayItem("Unit")] 解决
然后让 Produced_by 包含:public List
【问题讨论】:
-
尝试将 XMLElement 属性放在 Unit 类中,并在其属性之上。
-
AFAIK,不可能将 XML 与“Producing_Unit”标签一起使用,而是放弃匹配的具有标准属性的
Producing_Unit类,而不是实现IXmlSerializableinterface. 你最好的选择是将你的来自序列化层的应用程序/业务逻辑。保持您的序列化简单并匹配您的 XML 模式,然后简单地转换为/从该数据模型和更清晰的数据模型(不带Producing_Unit)供您的应用程序的其余部分使用。 -
@Ramie 你能举个例子吗?
标签: c# xml nested xml-serialization deserialization