Bonjour,
je cherche à m'amuser avec les content de XNA.
Je souhaite manipuler des fichiers XML décrivant des discussions.
ma classe Discussion :ma classe Dialogue qui compose Discussion :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 public class Discussion { private List<Dialogue> dialogues = new List<Dialogue>(); private String idDiscussion = null; private String idInitiateurDiscussion = null; public List<Dialogue> Dialogues { get { return dialogues; } set { dialogues = value; } } public String IdInitiateurDiscussion { get { return idInitiateurDiscussion; } set { idInitiateurDiscussion = value; } } public String IdDiscussion { get { return idDiscussion; } set { idDiscussion = value; } } ... }Mon Reader:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 public class Dialogue { private String idDialogue = null; private String texteEnonce = null; private String idParleur = null; private String idDialogueParent = null; public String TexteEnonce { get { return texteEnonce; } set { texteEnonce = value; } } public String IdDialogueParent { get { return idDialogueParent; } set { idDialogueParent = value; } } public String IdParleur { get { return idParleur; } set { idParleur = value; } } public String IdDialogue { get { return idDialogue; } set { idDialogue = value; } } ... }
Mon Writer:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 public class DiscussionContentReader : ContentTypeReader<Discussion> { protected override Discussion Read(ContentReader input, Discussion existingInstance) { Discussion dis = new Discussion(); dis.IdDiscussion = input.ReadString(); dis.IdInitiateurDiscussion = input.ReadString(); dis.Dialogues = input.ReadObject<List<Dialogue>>(); return dis; } } public class DialogueContentReader : ContentTypeReader<Dialogue> { protected override Dialogue Read(ContentReader input, Dialogue existingInstance) { Dialogue d = new Dialogue(); d.IdDialogue = input.ReadString(); d.IdDialogueParent = input.ReadString(); d.TexteEnonce = input.ReadString(); d.IdParleur = input.ReadString(); return d; } }
XML créé à la mano:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 [ContentTypeWriter] public class DiscussionContentWriter : ContentTypeWriter<Discussion> { protected override void Write(ContentWriter output, Discussion value) { output.Write(value.IdDiscussion); output.Write(value.IdInitiateurDiscussion); output.WriteObject<List<Dialogue>>(value.Dialogues); } public override string GetRuntimeReader(TargetPlatform targetPlatform) { return typeof(DiscussionContentReader).AssemblyQualifiedName; } } [ContentTypeWriter] public class DialogueContentWriter : ContentTypeWriter<Dialogue> { protected override void Write(ContentWriter output, Dialogue value) { output.Write(value.IdDialogue); output.Write(value.IdDialogueParent); output.Write(value.TexteEnonce); output.Write(value.IdParleur); } public override string GetRuntimeReader(TargetPlatform targetPlatform) { return typeof(DialogueContentWriter).AssemblyQualifiedName; } }
Mon erreur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 <?xml version="1.0" encoding="utf-8" ?> <XnaContent> <Asset Type="GestionMap.Discussion"> <IdDiscussion>Dis1</IdDiscussion> <IdInitiateurDiscussion>hyppo</IdInitiateurDiscussion> <Dialogues Type="System.Collections.Generic.List[GestionMap.Dialogue]"> <Item> <IdDialogue>dial1</IdDialogue> <IdDialogueParent /> <TexteEnonce>Bonjour!</TexteEnonce> <IdParleur>hyppo</IdParleur> </Item> <Item> <IdDialogue>dial2</IdDialogue> <IdDialogueParent>dial1</IdDialogueParent> <TexteEnonce>Hé les gars, regardez ce que j'ai trouvé</TexteEnonce> <IdParleur>explo1</IdParleur> </Item> </Dialogues> </Asset> </XnaContent>
Je ne comprends pas pourquoi je me fais jeter, pouvez-vous m'aider ? Ai-je tort d'essayer de définir un élément comme liste qu'i n'est pas l'élément racine ?Erreur XML element "Dialogues" not found in DiscussionDebut.xml
Merci
Partager