XmlSerializer:将元素数组序列化为具有不同元素名称的字符串

时间:2017-04-10 19:44:53

标签: c# xml-serialization

我的数组项可以有不同的名称,但它们都有简单的字符串值,例如:

<MyArray>
    <TypeA>foo</TypeA>
    <TypeA>bar</TypeA>
    <TypeB>bazz</TypeB>
</MyArray>

我如何实现这一目标?

我在这里查看MSDN上的文档:https://msdn.microsoft.com/en-us/library/2baksw0z(v=vs.110).aspx

有一个看起来像我想要的例子,但我不能按照他们说的那样工作:

public class Employee {  
    public string Name;  
}

public class Group {  
    [XmlArrayItem("MemberName")]  
    public Employee[] Employees;  
}  

结果XML应该如下所示:

<Group>  
    <Employees>  
        <MemberName>Haley</MemberName>  
    </Employees>  
</Group>

但是,当我运行此示例时,我得到以下XML:

<Group>
    <Employees>
        <MemberName>
            <Name>Haley</Name> 
        </MemberName>
    </Employees>
</Group>

我假设文档中存在错误(我在代码中看不到任何应该神奇地导致类Employee的值被其Name属性替换的值) ,但我真的有兴趣让我的XML看起来像他们的(错误的?)示例。

1 个答案:

答案 0 :(得分:0)

我在发布问题后立即找到了解决方案:使用XmlTextAttribute。

在他们的示例中,Employee类应该如下所示:

public class Employee {
    [XmlText]
    public string Name;
}

就我而言,我的集合可以包含TypeA和TypeB,其中每个类型都有一个带有[XmlText]属性的成员。