Как использовать XML-файлы в качестве файлов содержимого в XNA?

У меня есть файл 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?

9 голосов | спросил eflles 17 PMpSun, 17 Apr 2011 14:14:01 +040014Sunday 2011, 14:14:01

2 ответа


14

Я не пытался точно выяснить, что не так с вашим XML - это, вероятно, отсутствие пространства имен. Но вот правильный XML:

<?xml version="1.0" encoding="utf-8"?>
<XnaContent xmlns:Generic="System.Collections.Generic">
  <Asset Type="Generic:List[string]">
    <Item>Audi</Item>
    <Item>BMW</Item>
    <Item>Nissan</Item>
    <Item>Volvo</Item>
  </Asset>
</XnaContent>

Под капотом XmlImporter используется IntermediateSerializer. Поэтому для определения того, каким должен выглядеть ваш XML , можно использовать небольшую программу, например следующую:

var test = new List<string>(){ "Audi", "BMW", "Nissan", "Volvo" };
var sb = new StringBuilder();
using(XmlWriter writer = XmlWriter.Create(sb))
{
    IntermediateSerializer.Serialize(writer, test, null);
}
Console.Write(sb.ToString());

(Вы даже можете преобразовать вывод в поток, передать его методу Deserialize и восстановить объект - просто чтобы вдвойне уверен, что он работает. Также, вероятно, стоит поместить правильную кодировку в заголовок - например: StringBuilder - utf-16.)

Для некоторой подробной информации о IntermediateSerializer, взгляните на блог Shawn Hargreaves, начиная с этот пост и продолжается через архивы до августа 2008 года.

ответил Andrew Russell 17 PMpSun, 17 Apr 2011 18:05:13 +040005Sunday 2011, 18:05:13
0

Если вы хотите увидеть, как это сделать с помощью примера кода, вот пример, который использует xml, как вы хотите http://create.msdn.com/en-US/education/catalog /образец /столкновения

Если вы хотите прочитать статьи, объясняющие, что происходит, и получить представление о том, как работать с xml & обработчик содержимого, перейдите по этой ссылке, прокрутите вниз до раздела промежуточного сериализатора и прочитайте там 8 или 9 статей. http://www.talula.demon.co.uk/blogindex.html

ответил Steve H 17 PMpSun, 17 Apr 2011 16:33:24 +040033Sunday 2011, 16:33:24

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132