将 Class 对象序列化为平面 XML
Posted
技术标签:
【中文标题】将 Class 对象序列化为平面 XML【英文标题】:Serialize Class object to flat XML 【发布时间】:2021-11-12 12:38:05 【问题描述】:我想将内部类对象序列化为单位。假设我们有这个代码:
public class ClassA
public string Identifier get; set;
public ClassB ClassBItem get; set
public class ClassB
public string Name get; set
public string Description get; set;
我希望它在序列化时看起来像这样:
<ClassA>
<Identifier>Some identifier</Identifier>
<Name>Some name</Name>
<Description>Some description</Description>
</ClassA>
我会确保没有重复的元素名称。是否可以将这样的对象展平?
【问题讨论】:
最干净的方法是使用您想要的 XML 结构创建一个中间类,将您的对象转换为它,然后从 that 序列化 希望我可以避免这样做。 【参考方案1】:Newtonsoft 为 JSON 目的提供了一个标准库:https://www.newtonsoft.com/json,它使用标准序列化程序,结合指令 [XmlElement]
、[XmlIgnore]
、... 用于控制序列化。
编辑
对不起,我指的是“System.Xml”引用,它可以访问using System.Xml.Serialization;
。这反过来又提供了对 [XmlRoot("newRoot")]
、[XmlElement("Element_Tag")]
等指令的访问权限,以便序列化为 Xml 字符串,例如:
<newRoot>
<Element_Tag>a</Element_Tag>
</newRoot>
【讨论】:
JSON 库如何帮助 XML 序列化? @KlausGütter:你说得对,我已经相应地更正了我的答案。 谢谢@Dominique。那么,通过您所做的编辑,我如何使用它来展平内部属性?你能在解释中使用我的例子吗?抱歉,在没有转换为具有正确 XML 结构的中介类的情况下,我正在努力实现预期的目标。以上是关于将 Class 对象序列化为平面 XML的主要内容,如果未能解决你的问题,请参考以下文章
python Django Views - 如何将django对象数组序列化为平面JSON(排除模型,pk和fields节点)
将 Xml 反序列化为对象时出错 - xmlns='' 不是预期的