Mam plik XML reprezentujący różnych producentów samochodów, który będzie dostępny w mojej grze. Plik wygląda następująco:
<?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>
Podczas dodawania go do mojego folderu treści kompilator zwraca ten błąd:
There was an error while deserializing intermediate XML. Cannot find type "List`1"
Jak mogę utworzyć listę ciągów, umieścić ją w XML i odczytać z XNA?
XmlImporter
części potoku treści XNA. Potok deserializuje XML w celu przekonwertowania go do pliku XNB (który następnie zostanie załadowanyContentManager
w czasie wykonywania).Odpowiedzi:
Nie próbowałem dowiedzieć się dokładnie, co jest nie tak z twoim XML - prawdopodobnie jest to brak przestrzeni nazw. Ale oto poprawny XML:
Pod maską
XmlImporter
wykorzystujeIntermediateSerializer
klasę. Tak więc mały program, taki jak poniżej, może być użyty do ustalenia, jak powinien wyglądać Twój XML :(Możesz nawet przekonwertować dane wyjściowe na strumień, przekazać je do
Deserialize
metody i zrekonstruować obiekt - aby mieć podwójną pewność, że działa. Prawdopodobnie warto również umieścić odpowiednie kodowanie w nagłówku - np .:StringBuilder
is utf-16 .)Aby uzyskać szczegółowe informacje na ten temat
IntermediateSerializer
, zajrzyj na blog Shawna Hargreavesa, zaczynając od tego posta i kontynuując przeglądanie archiwów do sierpnia 2008 roku.źródło
Jeśli chcesz zobaczyć, jak to zrobić za pomocą przykładu kodu, oto przykład, który używa xml tak jak chcesz http://create.msdn.com/en-US/education/catalog/sample/collision
Jeśli chcesz przeczytać artykuły wyjaśniające, co się dzieje i uzyskać wgląd w pracę z xml i procesorem treści, przejdź do tego linku, przewiń w dół do sekcji pośredniego serializatora i przeczytaj 8 lub 9 artykułów. http://www.talula.demon.co.uk/blogindex.html
źródło