XmlSerializer - 序列化没有父节点的元素

时间:2014-02-17 11:09:45

标签: c# .net xmlserializer

这是我关于stackoverflow的第一个问题,所以这会很有趣!

我有以下要转换为xml的结构。我需要包含内部对象中的所有子元素,而不将内部对象作为节点。

class element1
{
    element1.1
    {
        element1.1.1,
        element1.1.2,
        element1.1.3,
        element1.1.4,
    }
}

换句话说,如何将其序列化为以下内容?

<element1>
    <element1.1.1 />
    <element1.1.2 />
    <element1.1.3 />
    <element1.1.4 />
</element1>

我正在尝试使用xmlelement,XmlIgnore等不同的组合,但直到现在才开始工作。

任何建议都会深表感谢!

这里的代码是:

[XmlElement("Element1")]
public class Element1
{
   [XmlElement("Element11")]
   public string Element11 {get;set;}

   [XmlElement("Element12")]
   public Element12 Element12 {get;set;}

}

public class Element12 
{
    [XmlElement("element121")]
    public string element1{get;set;}
    [XmlElement("element122")]
    public string element2{get;set;}
    [XmlElement("element123")]
    public string element3{get;set;}
    [XmlElement("element124")]
    public string element4{get;set;}
}

2 个答案:

答案 0 :(得分:1)

你做不到。 XmlSerializer假设您要序列化的模型与您想要的xml一样粗略。你可以做一些小的调整,但这不是其中之一。如果问题是您的域模型有一个额外的层,那么解决方案很简单: 不要序列化您的域模型 。引入一组新的DTO类,它们仅用于 用于xml序列化,并在序列化之前将数据转换为DTO模型。

答案 1 :(得分:1)

好的,我可以或多或少地明白我需要为xmlserializer制作的pocos。

但是,我想知道为什么不能循环遍历数组/对象列表,并在xml文档中创建对象而不将listname作为实际节点。

一些有效的xml文件是这样制作的,我觉得很奇怪在XmlSerializer类中似乎无法绕过它?

相关问题