繁体   English   中英

C#Xml序列化:将类属性序列化为父类的属性

[英]C# Xml Serialization: Serialize Class properties as attributes to the parent class

[Serializable]
public class XX
{
    [XmlAttribute("name")]
    public string name{get;set;}
}

[Serializable]
[XmlRoot("tree")]
public class XY
{
    public XX Name{get;set;}

    [XmlAttribute("surname")]
    public Surname{get;set;}
}

嗨,我正在尝试将类似上述这些类的内容序列化为XML。 我的问题是,XX类的属性应该序列化为XY类的序列化属性,而不是XmlElement。 有人知道这是否可行吗? 这里要澄清的是应产生的xml文件的示例:

<tree name="Jack" surname="Thompson">
</tree>

我不想要这样:

<tree surname="Thompson">
    <name>Jack</name>
</tree>

我认为您无法做到这一点。 XML的结构告诉串行器如何工作。 如果您在父对象中将一个属性标记为名为name的属性,该序列化程序将不知道要使用哪个name

您可能应该调整类结构以反映所需的xml。 如果“名称”只是元素“树”的属性,那么理想情况下,字符串“名称”应为类“ XY”的属性,而类“ XX”根本不存在。

但是,如果您真的需要像现在这样存在这些类,那么我建议创建第三个类以充当代理,该类具有与您的xml匹配的结构,并在XY类中创建一个将自身翻译的方法进入新班级。 然后序列化新类,而不是XY和XX。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM