J'essaie de lire le document XML. Mon XML:
<?xml version="1.0" encoding="utf-8"?>
<SplashScreen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Path>SplashScreen/Image-King</Path>
</SplashScreen>
Mon code qui lit XML:
XmlGameScreen = new XmlManager<GameScreen>();
XmlGameScreen.Type = currentscreen.Type;
currentscreen = XmlGameScreen.Load("LoadXML/SplashScreen.xml");
Et
public Type Type;
public T Load(string path)
{
T instance;
using (TextReader textreader = new StreamReader(path))
{
XmlSerializer xml = new XmlSerializer(Type);
instance = (T)xml.Deserialize(textreader);
}
return instance;
}
Je reçois une erreur sur instance = (T)xml.Deserialize(textreader);
Mon document XML est-il incorrect? J'essaie de lire <Path>
. Mise à jour: mon exception interne: impossible de sérialiser le membre 'MyRPGgame.SplashScreen._image'
De type 'Microsoft.Xna.Framework.Graphics.Texture2D'
D'après mon expérience, il y a une erreur dans la 2e ligne du 2e caractère. regardez si vos noms de classe sont différents des balises XML. est-ce que vous changez peut-être le "nom de racine XML" en un autre.
Jetez un œil à la structure XML et à quelle classe sérialisez-vous sur quel nœud.
Lisez également Documentation MSDN sur la classe XmlRootAttribute .
Dans mon cas, il semble qu'une des mises à jour de Visual Studio 2017 version 15.5 a provoqué cette erreur lors de la tentative d'ouverture de projets SSRS. La solution consiste à supprimer le fichier * .rptproj.rsuser du dossier de projet et réessayer.
Cela signifie généralement que vous avez un espace au début du fichier; recherchez un saut de ligne avant le <?xml...
. Encore mieux: veuillez afficher les premiers octets (de préférence jusqu'à <SplashScreen
) du fichier vu dans un éditeur binaire.
Cela pourrait signifie également que vous avez un unicode invisible ou un caractère de contrôle quelque part avant le <SplashScreen
Je viens de faire face au même problème, mais dans mon cas, une propriété avec [XmlArrayAttribute]
le getter accédait à un champ avec [XmlIgnoreAttribute]
qui n'a pas été initialisé.