Tengo un archivo XML que representa diferentes fabricantes de automóviles que estarán disponibles en mi juego. El archivo se ve así:
<?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>
Al agregarlo a mi carpeta de contenido, el compilador devuelve este error:
There was an error while deserializing intermediate XML. Cannot find type "List`1"
¿Cómo puedo crear una lista de cadenas, ponerla en XML y leerla desde XNA?
XmlImporter
parte de la canalización de contenido XNA. La canalización deserializa el XML para convertirlo en un archivo XNB (que luego se cargaráContentManager
en tiempo de ejecución).Respuestas:
No he tratado de averiguar exactamente qué hay de malo en tu XML; probablemente sea la falta de un espacio de nombres. Pero aquí está el XML correcto:
Debajo del capó
XmlImporter
usa laIntermediateSerializer
clase. Por lo tanto, se puede usar un programa pequeño como el siguiente para determinar cómo debería verse su XML :(Incluso puede convertir la salida en una secuencia, pasarla al
Deserialize
método y reconstruir el objeto, solo para estar doblemente seguro de que funciona. También probablemente valga la pena poner la codificación correcta en el encabezado, por ejemplo:StringBuilder
es utf-16 .)Para obtener información detallada sobre
IntermediateSerializer
, eche un vistazo al blog de Shawn Hargreaves, comenzando con esta publicación y continuando a través de los archivos hasta agosto de 2008.fuente
Si desea ver cómo hacerlo por ejemplo de código, aquí hay una muestra que usa xml como desea http://create.msdn.com/en-US/education/catalog/sample/collision
Si desea leer artículos que explican lo que está sucediendo y obtener información sobre cómo trabajar con xml y el procesador de contenido, vaya a este enlace, desplácese hacia abajo hasta la sección de serializador intermedio y lea los 8 o 9 artículos allí. http://www.talula.demon.co.uk/blogindex.html
fuente