J'ai un fichier XML représentant différents constructeurs automobiles qui sera disponible dans mon jeu. Le fichier ressemble à ceci:
<?xml version="1.0" encoding="utf-8" ?>
<XnaContent>
<Asset Type="List[string]">
<car>Audi</car>
<car>BMW</car>
<car>Nissan</car>
<car>Volvo</car>
</Asset>
</XnaContent>
Lors de l'ajout dans mon dossier de contenu, le compilateur renvoie cette erreur:
There was an error while deserializing intermediate XML. Cannot find type "List`1"
Comment puis-je créer une liste de chaînes, la mettre en XML et la lire depuis XNA?
XmlImporter
partie du XNA Content Pipeline. Le pipeline désérialise le XML afin de le convertir en un fichier XNB (qui sera ensuite chargé parContentManager
au moment de l'exécution).Réponses:
Je n'ai pas essayé de découvrir exactement ce qui ne va pas avec votre XML - c'est probablement le manque d'un espace de noms. Mais voici le XML correct:
Sous le capot l'
XmlImporter
utilise laIntermediateSerializer
classe. Ainsi, un petit programme comme le suivant peut être utilisé pour déterminer à quoi devrait ressembler votre XML :(Vous pouvez même convertir la sortie en un flux, la transmettre à la
Deserialize
méthode et reconstruire l'objet - juste pour être doublement sûr que cela fonctionne. De plus, il vaut probablement la peine de mettre le bon encodage dans l'en-tête - par exemple:StringBuilder
is utf-16 .)Pour des informations détaillées sur
IntermediateSerializer
, consultez le blog de Shawn Hargreaves, en commençant par ce post et en continuant à travers les archives jusqu'en août 2008.la source
Si vous voulez voir comment le faire par exemple de code, voici un exemple qui utilise xml comme vous voulez http://create.msdn.com/en-US/education/catalog/sample/collision
Si vous souhaitez lire des articles expliquant ce qui se passe et avoir un aperçu de la façon de travailler avec xml et le processeur de contenu, accédez à ce lien, faites défiler jusqu'à la section du sérialiseur intermédiaire et lisez les 8 ou 9 articles. http://www.talula.demon.co.uk/blogindex.html
la source