Erreur compilation fichier xml sur chargement d'une list via content
Bonjour,
je cherche à m'amuser avec les content de XNA.
Je souhaite manipuler des fichiers XML décrivant des discussions.
ma classe Discussion :
Code:
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; }
}
...
} |
ma classe Dialogue qui compose Discussion :
Code:
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 Reader:
Code:
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;
}
} |
Mon Writer:
Code:
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;
}
} |
XML créé à la mano:
Code:
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> |
Mon erreur:
Citation:
Erreur XML element "Dialogues" not found in DiscussionDebut.xml
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 ?
Merci :)