Erreur de la Désérialisation Xml de l'Objet xmlns=" n'était pas prévu
Je vais avoir vraiment du mal à essayer de désérialisation XML et espérais que quelqu'un peut offrir de l'aide. J'ai beaucoup lu de semblable postes, mais je ne suis pas en mesure de résoudre ce problème.
XML je tente de désérialiser
<register-account success="false">
<user-name>xxxxx</user-name>
<password>fghgh</password>
<email>[email protected]</email>
<error>
<errorcode>120</errorcode>
<errormessage>The password is invalid</errormessage>
</error>
</register-account>
Classe je suis en train de désérialiser à:
[Serializable, XmlRoot(ElementName = "register-account", Namespace = "MyNamespace")]
[XmlType("register-account")]
public class RegisterAccountResponse
{
[XmlAttribute("success")]
public bool Success { get; set; }
///<summary>
///Gets or sets the Tennant email address
///</summary>
[XmlElement("email")]
public string Email { get; set; }
///<summary>
///Gets or sets the tennant password
///</summary>
[XmlElement("password")]
public string Password { get; set; }
///<summary>
///Gets or sets the Tennant username
///</summary>
[XmlElement("user-name")]
public string Username { get; set; }
///<summary>
///A Tenant Portal error relating to the RegisterAccountRequest
///</summary>
[XmlElement("error")]
public QubeError Error;
}
Désérialisation Méthode
public static T Deserialize<T>(string data) where T : class
{
if (data == null)
{
return null;
}
if (data.Trim().Length == 0)
{
return null;
}
var ser = new XmlSerializer(typeof(T));
using (var sr = new StringReader(data))
{
return (T)ser.Deserialize(sr);
}
}
De La Désérialisation D'Un Appel De Méthode
var data = Helper.Deserialize<RegisterAccountResponse>(xml);
Exception:
Il y a une erreur dans le document XML (1,
2). --->
Système.InvalidOperationException: a
pas prévu. au
Microsoft.Xml.La sérialisation.GeneratedAssembly.XmlSerializationReaderData.Read5_data()
Intérieure Exception comme suit:
<register-account xmlns=''> was not expected.
Vous devez vous connecter pour publier un commentaire.
Suffit de décoller le
Namespace =
:depuis votre xml ne semble pas être dans un xml de l'espace de noms. Aussi,
[Serializable]
n'est pas utilisé parXmlSerializer
.Si votre xml à l'aide d'un espace de noms, il aurait un
xmlns
à la racine.Aussi, pour aider les appelants vous pouvez ajouter
where T : class, new()
(le, new()
étant le plus) à votreDeserialize
méthode, depuisXmlSerializer
exigences d'un public constructeur sans paramètre.xmlns="MyNamespace"
, ouxmlns:someAlias="MyNamespace"
J'ai trouvé la manière suivante corrigé cela pour moi