4

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

 <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 的手动序列化用于其中的一部分,而将 XMLSerialization 用于其余部分?

4

2 回答 2

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();
于 2012-11-08T08:54:54.227 回答
0

只是为了关闭它。我解决了这个问题,我认为这可以称为有点hack,因为我想避免手动序列化整个对象图。所以:

  • 使用xml序列化序列化为字符串
  • 操纵字符串以删除有问题的额外嵌套元素
  • 将 xml 整个字符串解析为单个 XElement(允许将其正确序列化为 WCF 的 xml)
于 2012-11-09T11:24:52.193 回答