假設我有下面的類結構:的Xml序列化數組自定義標籤名稱
[XmlInclude(typeof(CustomNode))]
[XmlInclude(typeof(CustomNode2))]
[XmlRoot("node")]
class Node
{
[XmlElement("node")]
public Node[] Children { get; set; }
}
[XmlRoot("custom-node")]
class CustomNode : Node { }
[XmlRoot("custom-node-2")]
class CustomNode2 : Node { }
的創建以下結構:
var root = new Node { Children = new Node[2] };
root.Children[0] = new CustomNode();
root.Children[1] = new CustomNode2();
當我的XML序列化這個結構,我得到以下輸出:
<node>
<node xsi:Type="CustomNode"/>
<node xsi:Type="CustomNode2"/>
</node>
但我想看到(並能夠正確加載)somethi ng像這樣:
<node>
<custom-node/>
<custom-node-2/>
</node>
XmlSerializer可以嗎?整個問題是因爲我打算手動創建源xml,並試圖讓它更人性化和友好。
你說得對,沒有這些XmlInclude屬性,我的示例將不起作用。但是這不會改變序列化的輸出。 – 2012-02-17 13:01:45
我編輯了我的答案。檢查是否可以幫助你。 – BlueM 2012-02-17 13:50:38
謝謝!那是我需要的。我只將XmlArrayItem更改爲XmlElement,因爲我不想在它們周圍有容器。但無論如何,這工作正常。 – 2012-02-17 14:09:40