0
請幫助我使用具有相同名稱但內容不同的多個標記對XML進行反序列化的模型。具有相同名稱但內容不同的多個元素的XML反序列化
<?xml version="1.0" encoding="utf-16"?>
<found>
<prefixes>
<prefix name="Name1">Val1</prefix>
<prefix name="Name2">Val2</prefix>
</prefixes>
<objects>
<object handle="0">
<User>
<familyName>Family</familyName>
<givenName>Given1</givenName>
</User>
</object>
<object handle="0">
<User>
<familyName>Family2</familyName>
<givenName>Given2</givenName>
</User>
</object>
</objects>
<objects>
<object handle="0">
<User>
<familyName>Family3</familyName>
<givenName>Given3</givenName>
</User>
</object>
<object handle="0">
<User>
<familyName>Family4</familyName>
<givenName>Given4</givenName>
</User>
</object>
</objects>
此XML包含2集包裹在標籤<objects>
。爲了調試目的,我對<objects>
標籤使用了相同的內容,但實際上它們會有所不同。此外,每個集合的內容都可能發生變化,但文檔的結構是相同的:它包含前綴集合和2個對象集合。
這裏是用來序列化/反序列化XML數據對象:
[XmlRoot(ElementName = "found", IsNullable = true)]
public class UserProfileDto
{
[XmlArray("prefixes", Order = 0)]
[XmlArrayItem("prefix", IsNullable = false)]
public PrefixDto [] Prefixes { get; set; }
[XmlArray("objects", Order = 1)]
[XmlArrayItem(ElementName = "object", Type = typeof(ObjectDto), IsNullable = false)]
public ObjectDto[] Objects { get; set; }
[XmlArray("objects", Order = 2)]
[XmlArrayItem(ElementName = "object", Type = typeof(ObjectDto), IsNullable = false)]
public ObjectDto[] AnotherObjects { get; set; }
}
public class PrefixDto
{
[XmlAttribute("name")]
public string Name { get; set; }
[XmlText]
public string Value { get; set; }
}
public class ObjectDto
{
[XmlElement("User")]
public UserDto User { get; set; }
}
[Serializable]
public class UserDto
{
[XmlElement("familyName")]
public string FamilyName { get; set; }
[XmlElement("givenName")]
public string GivenName { get; set; }
}
的問題是 - 該序列正常工作與此模型類,但是反序列化時,物業AnotherObjects
始終爲空。另一個奇怪的事情 - 是屬性Objects
(在類UserProfileDto
)充滿了來自最後一個元素<object>
的數據。
請幫忙處理這個反序列化。
如果你有相同名稱的元素,但他們背後不同的對象,你可以使用自己的序列化/ deseralizaton方法。使用XElement可以幫助你。 – KamikyIT
您提交的xml具有相同的內容。所以你的問題沒有意義。用不同的內容顯示xml,然後我們將討論。 –
Alexander,xml正在更正。我需要反序列化這個XML。這個xml文檔代表了相同對象的前綴列表和2個列表。挑戰在於2個標籤具有不同的含義,例如第一個標記代表常規用戶列表,第二個標記 - 組管理員列表 –
Valentine