Eu tenho um arquivo XML representando diferentes fabricantes de carros que estarão disponíveis no meu jogo. O arquivo fica assim:
<?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>
Ao adicioná-lo à minha pasta de conteúdo, o compilador retorna este erro:
There was an error while deserializing intermediate XML. Cannot find type "List`1"
Como posso criar uma lista de strings, colocá-lo em XML e lê-lo no XNA?
XmlImporter
parte do XNA Content Pipeline. O pipeline desserializa o XML para convertê-lo em um arquivo XNB (que será carregadoContentManager
no tempo de execução).Respostas:
Não tentei descobrir exatamente o que há de errado com o seu XML - provavelmente é a falta de um espaço para nome. Mas aqui está o XML correto:
Sob o capô,
XmlImporter
aIntermediateSerializer
classe é usada . Assim, um pequeno programa como o seguinte pode ser usado para determinar o que seu XML deve ser parecido:(Você pode até converter a saída em um fluxo, passá-la para o
Deserialize
método e reconstruir o objeto - apenas para ter certeza de que está funcionando. Também vale a pena colocar a codificação correta no cabeçalho - por exemplo:StringBuilder
is utf-16 .)Para obter informações detalhadas
IntermediateSerializer
, dê uma olhada no blog de Shawn Hargreaves, começando com este post e continuando nos arquivos até agosto de 2008.fonte
Se você quiser ver como fazê-lo por exemplo de código, veja um exemplo que usa xml como você deseja http://create.msdn.com/en-US/education/catalog/sample/collision
Se você quiser ler artigos explicando o que está acontecendo e obter informações sobre como trabalhar com xml e o processador de conteúdo, acesse este link, role a tela para baixo até a seção serializador intermediário e leia os 8 ou 9 artigos. http://www.talula.demon.co.uk/blogindex.html
fonte