序列化为XML非嵌套重复序列

时间:2012-11-08 08:36:17

标签: c# xml-serialization

我需要序列化到一个有多个非嵌套值的数组,即

 <MyArray>
    <Code>code1</Code>
    <Name>name associated with code 1</Name>
    <Code>code2</Code>
    <Name>name associated with code 2</Name>
    <Code>code3</Code>
    <Name>name associated with code 3</Name>
    <Code>code4</Code>
    <Name>name associated with code 4</Name>
  </MyArray>

我在我的阵列上尝试了各种属性 - 例如

[XmlArray(ElementName="MyArray")]        
[XmlArrayItem(ElementName="")]        
public List<MyPair> MyPairs { get; set; }

注意:MyPair对象包含2个字符串属性(代码和名称):

但无济于事,我总是得到每对的一个包含元素(通常会更好,但不是模式所要求的 - 而且我无法控制)。非常感谢任何帮助。

编辑这是一个巨大的xml文档的一部分,是否可以使用XElement的1部分手动序列化和其余的XMLSerialization?

2 个答案:

答案 0 :(得分:3)

我没有看到除手动序列化项目之外的其他方法。

XElement xElem = new XElement("MyArray", 
                               array.Select(m => new XElement[] { 
                                               new XElement("Code", m.Code), 
                                               new XElement("Name", m.Name) })
                              );
var xml = xElem.ToString();

答案 1 :(得分:0)

关闭这个。我解决了这个问题,我认为可以称之为一个黑客,因为我想避免手动序列化整个对象图。所以:

  • 使用xml序列化序列化为字符串
  • 操纵字符串以删除有问题的额外嵌套元素
  • 将xml整个字符串解析为单个XElement(需要将其正确序列化为WCF的xml)