名前は同じで内容は異なる複数のタグを使用して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はタグ<objects>
に包まれた2コレクションが含まれています。デバッグの目的のために、私は両方の<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
は常にnullであるが、このモデルクラスで正常に動作していること。もう1つの奇妙なこと - そのプロパティはObjects
(クラスUserProfileDto
)は最後の要素<object>
のデータで満たされていますか?
このデシリアライズに対処してください。
:この例では
は、私は、次のXSLT変換を適用します。 XElementを使用するとあなたを助けることができます。 – KamikyIT
送信したxmlの内容は同じです。だからあなたの質問は意味をなさない。さまざまなコンテンツのxmlを表示してから、話し合ってみましょう。 –
Alexander、xmlは正しいです。私はこのXMLを正確に非直列化する必要があります。このxmlドキュメントは、接頭辞のリストと同じオブジェクトの2つのリストを表します。課題は、の2つのタグが異なる意味を有することである。最初のタグは通常のユーザーのリストを表し、2番目のグループ - グループマネージャのリスト –
Valentine