У меня есть файл XML, представляющий различные производители автомобилей, которые будут доступны в моей игре. Файл выглядит так:
<?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>
При добавлении его в мою папку содержимого компилятор возвращает эту ошибку:
There was an error while deserializing intermediate XML. Cannot find type "List`1"
Как я могу создать список строк, поместить его в XML и прочитать его из XNA?
XmlImporter
часть конвейера содержимого XNA. Конвейер десериализует XML, чтобы преобразовать его в файл XNB (который затем будет загруженContentManager
во время выполнения).Ответы:
Я не пытался выяснить, что именно не так с вашим XML - это, вероятно, отсутствие пространства имен. Но вот правильный XML:
Под капотом
XmlImporter
используетсяIntermediateSerializer
класс. Таким образом, небольшая программа, подобная следующей, может быть использована для определения того, как должен выглядеть ваш XML :(Вы даже можете преобразовать вывод в поток, передать его
Deserialize
методу и реконструировать объект - просто чтобы быть уверенным, что он работает вдвойне. Также, вероятно, стоит поместить правильную кодировку в заголовок - например:StringBuilder
is utf-16 .)Для получения более подробной информации о
IntermediateSerializer
блоге Шона Харгривза, начните с этого поста и продолжайте изучать архивы до августа 2008 года.источник
Если вы хотите увидеть, как это сделать на примере кода, вот пример, который использует xml, как вы хотите http://create.msdn.com/en-US/education/catalog/sample/collision
Если вы хотите прочитать статьи, объясняющие, что происходит, и получить представление о том, как работать с xml и процессором контента, перейдите по этой ссылке, прокрутите вниз до промежуточного раздела сериализатора и прочитайте там 8 или 9 статей. http://www.talula.demon.co.uk/blogindex.html
источник