只是一個人爲的例子,但我有一些類我想控制序列化時的名稱。序列化集合項時使用類型的根名稱
[XmlRoot("item")]
public class ItemWrapper
{
[XmlArray("parts")]
public List<PartWrapper> Parts { get; set; }
}
[XmlRoot("part")]
public class PartWrapper
{
[XmlAttribute("name")]
public string Name { get; set; }
}
現在,當我序列化有一些Parts
的ItemWrapper
,我期待每一個PartWrapper
項目要使用root名稱("part"
)序列,但它不是使用類型的名稱(它會使用默認如果沒有指定XmlRootAttribute
)。
<item>
<parts>
<PartWrapper name="foo" />
<PartWrapper name="bar" />
</parts>
</item>
現在我知道解決這個問題得到我想要的是在XmlArrayItemAttribute
添加到Parts
屬性來指定每個項目的名字,但我覺得它是多餘的。我只是想用我指定的類型根的名稱。
[XmlRoot("item")]
public class Item
{
[XmlArray("parts")]
[XmlArrayItem("part", Type=typeof(PartWrapper))]
public List<PartWrapper> Parts { get; set; }
}
有沒有一種方法,我可以告訴大家,我想使用的根名稱爲藏品串行?如果是這樣,怎麼樣?
爲什麼不使用根名稱?它不應該有什麼好的理由?
這是我的理解,XmlRootAttribute
允許您完全像XmlElementAttribute
那樣命名元素,只有它必須應用於類。我想我錯了。
啊,所以我應該一直在使用'XmlType'。最長的時間,我認爲它只關聯了一個XSD數據類型或其他東西。我不知道在類型上實際設置了什麼名字,我一直認爲'XmlRootAttribute'是唯一的方法。 –