C #: erreur de désérialisation du fichier XML (pensez que c’est un problème d’espace de nom – ne pouvez pas le résoudre pendant toute la vie)

Je désérialise un fichier XML qui provient d’un service Web de l’un de nos clients.

Le problème est, après avoir créé la classe avec xsd.exe, je désérialise le fichier et obtient le message habituel “Il existe une erreur dans le document XML (2, 2)”. erreur de studio visuel. Je présume que ceci est la ligne 2, qui pointe vers les déclarations d’espace de nom:

Haut de fichier XML:

   
MX 2009-05-11T09:48:51+01:00 SUPPLIER 12420317323327108

Top of Class:

 [System.CodeDom.Comstackr.GeneratedCodeAtsortingbute("xsd", "2.0.50727.42")] [System.SerializableAtsortingbute()] [System.Diagnostics.DebuggerStepThroughAtsortingbute()] [System.ComponentModel.DesignerCategoryAtsortingbute("code")] [System.Xml.Serialization.XmlTypeAtsortingbute(AnonymousType=true, Namespace="http://www.mro.com/mx/integration")] [System.Xml.Serialization.XmlRootAtsortingbute(Namespace="http://www.mro.com/mx/integration", IsNullable=false)] public partial class MXWorkorderOutResp { private MXWorkorderOutRespHeader[] headerField; private MXWorkorderOutRespContentMXWORKORDERWORKORDER[][][] contentField; private ssortingng languageField; ///  [System.Xml.Serialization.XmlElementAtsortingbute("Header")] public MXWorkorderOutRespHeader[] Header { get { return this.headerField; } set { this.headerField = value; } } ///  [System.Xml.Serialization.XmlArrayItemAtsortingbute("MXWORKORDER", typeof(MXWorkorderOutRespContentMXWORKORDERWORKORDER[]), IsNullable=false)] [System.Xml.Serialization.XmlArrayItemAtsortingbute("WORKORDER", typeof(MXWorkorderOutRespContentMXWORKORDERWORKORDER), IsNullable=false, NestingLevel=1)] public MXWorkorderOutRespContentMXWORKORDERWORKORDER[][][] Content { 

Je présume qu’il y a une erreur avec le:

 [System.Xml.Serialization.XmlTypeAtsortingbute(AnonymousType=true, Namespace="http://www.mro.com/mx/integration")] [System.Xml.Serialization.XmlRootAtsortingbute(Namespace="http://www.mro.com/mx/integration", IsNullable=false)] 

partie du XML, mais je ne sais pas du tout à quoi le changer – ni de ce que le VS veut.

toute aide appréciée du tout les gars, je suis encore assez nouvelle dans tout cela et mon patron m’épouvante tout le temps pour que cela fonctionne 🙁

EDIT: Il y a une exception intérieure oui! Désolé les gars!

 {" was not expected."} 

Alors, comment puis-je append cette déclaration d’espace de noms à la classe?

L’enveloppe de soap ne fait pas partie de votre object sérialisé. Cela fait partie du protocole de transport SOAP. Vous devez retirer votre object de l’enveloppe plutôt que de le traiter avec l’enveloppe.

Au lieu de prendre l’intégralité du fichier xml (qui, pour une raison quelconque, inclut l’enveloppe de soap), vous devez prendre le premier enfant du soap: body et utiliser That pour la désérialisation dans votre object.

Découvrez ce post SO …

Utilisation de C # et XDocument / XElement pour parsingr une réponse SOAP

… qui traite de l’parsing du fichier.