Cela fait longtemps que je n'ai pas utilisé DataContractSerializer
et j'ai un peu de mal à désérialiser un fichier XML.Problème de désérialisation du fichier XML à l'aide de DataContractSerializer
<?xml version="1.0" encoding="utf-8"?> <SoftwareLicense xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
L'erreur que je reçois est:
{"Error in line 1 position 117. Expecting element 'SoftwareLicense' from namespace 'http://schemas.datacontract.org/2004/07/Solentim.Modules.Licensing.Activation'.. Encountered 'Element' with name 'SoftwareLicense', namespace ''. "}
[DataContract(Name = "SoftwareLicense")]
public class SoftwareLicense : ISoftwareLicense
{
...
}
J'ai essayé spécifier l'espace de noms qui ne fonctionne pas non plus.
var serializer = new DataContractSerializer(typeof(SoftwareLicense));
using (var stream = new FileStream(filename, FileMode.Open, FileAccess.Read))
{
using (var reader =
XmlDictionaryReader.CreateTextReader(stream, new XmlDictionaryReaderQuotas()))
{
return (SoftwareLicense) serializer.ReadObject(reader);
}
}
L'espace de noms du fichier a récemment été modifié et une interface a été ajoutée à la classe. J'ai résolu tous les autres problèmes que je n'arrive pas à contourner celui-ci.
Je préfère utiliser DataContractSerializer que la classe a maintenant des propriétés d'interface et XMLSerializer ne sera pas deserialise il
Puisque le message d'erreur est lié au fichier XML, veuillez fournir le fichier XML. –
Pourquoi n'utilisez-vous pas XmlSerializer, car cela rend les choses beaucoup plus faciles? –
Ah le XML a été inclus mais a été retiré de la publication, manqué la balise 'code' –