2012-11-08 52 views
4

我需要序列,其具有多個非嵌套值即序列化成XML非嵌套重複序列

<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

我不知道是否有任何方式讓XmlSerializer做特定的佈局 - AFAIK *你不能*。也許使用像XElement的東西呢? –

+1

我同意Marc,不能用XmlSerializer來完成。 –

回答

0

只是爲了關閉這個。我解決了這個問題,我認爲可能會被稱爲一點黑客,因爲我想避免手動序列化整個對象圖。所以:

  • 使用的XML序列化序列化到一個字符串
  • 操縱的字符串刪除冒犯多餘的嵌套元素
  • 解析的XML整個字符串單的XElement(允許這是正確序列化爲XML所需WCF)
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(); 
+0

已標記但未標記的答案,因爲如果手動序列化整個文檔但未解決編輯問題,如果添加XElement作爲序列化屬性序列化它以我想要的方式序列化,但嵌套整個XElement。 – deadcrab