web-dev-qa-db-fra.com

Il y a une erreur dans le document XML (2, 2). Qu'est-ce que cela signifie?

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'

16
Losser Bad

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 .

8
user853710

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.

28
user875318

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

3
Marc Gravell

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é.

0
Darius