Convertir un object en chaîne XML

J’ai une classe nommée WebserviceType j’ai obtenue à partir de l’outil xsd.exe à partir d’un fichier XSD.

Maintenant, je veux désérialiser une instance d’un object WebServiceType en une chaîne. Comment puis-je faire ceci?

L’object MethodCheckType a pour parameters un tableau WebServiceType .

Mon premier essai a été comme si je l’avais sérialisé: avec un XmlSerializer et un SsortingngWriter (en sérialisant j’ai utilisé un SsortingngReader ).

C’est la méthode dans laquelle je sérialise l’object WebServiceType :

 XmlSerializer serializer = new XmlSerializer(typeof(MethodCheckType)); MethodCheckType output = null; SsortingngReader reader = null; // catch global exception, logg it and throw it try { reader = new SsortingngReader(path); output = (MethodCheckType)serializer.Deserialize(reader); } catch (Exception) { throw; } finally { reader.Dispose(); } return output.WebService; 

Modifier:

Peut-être pourrais-je le dire en d’autres termes: j’ai une instance de cet object MethodCheckType un autre côté, j’ai le document XML à partir duquel j’ai sérialisé cet object. Maintenant, je veux convertir cette instance en un document XML sous la forme d’une chaîne. Après cela, je dois prouver si les deux chaînes (de documents XML) sont identiques. C’est ce que je dois faire, car je fais des tests unitaires de la première méthode dans laquelle je lis un document XML dans un SsortingngReader et le sérialise dans un object MethodCheckType .

Voici la méthode de conversion dans les deux sens. this = instance de votre classe

 public ssortingng ToXML() { var ssortingngwriter = new System.IO.SsortingngWriter(); var serializer = new XmlSerializer(this.GetType()); serializer.Serialize(ssortingngwriter, this); return ssortingngwriter.ToSsortingng(); } public static YourClass LoadFromXMLSsortingng(ssortingng xmlText) { var ssortingngReader = new System.IO.SsortingngReader(xmlText); var serializer = new XmlSerializer(typeof(YourClass )); return serializer.Deserialize(ssortingngReader) as YourClass ; } 

Je me rends compte que c’est un article très ancien, mais après avoir examiné la réponse de LB, j’ai réfléchi à la manière dont je pourrais améliorer la réponse acceptée et la rendre générique pour ma propre application. Voici ce que j’ai imaginé:

 public static ssortingng Serialize(T dataToSerialize) { try { var ssortingngwriter = new System.IO.SsortingngWriter(); var serializer = new XmlSerializer(typeof(T)); serializer.Serialize(ssortingngwriter, dataToSerialize); return ssortingngwriter.ToSsortingng(); } catch { throw; } } public static T Deserialize(ssortingng xmlText) { try { var ssortingngReader = new System.IO.SsortingngReader(xmlText); var serializer = new XmlSerializer(typeof(T)); return (T)serializer.Deserialize(ssortingngReader); } catch { throw; } } 

Ces méthodes peuvent maintenant être placées dans une classe d’assistance statique, ce qui signifie qu’aucune duplication de code n’est nécessaire pour chaque classe devant être sérialisée.

  public static ssortingng Serialize(object dataToSerialize) { if(dataToSerialize==null) return null; using (SsortingngWriter ssortingngwriter = new System.IO.SsortingngWriter()) { var serializer = new XmlSerializer(dataToSerialize.GetType()); serializer.Serialize(ssortingngwriter, dataToSerialize); return ssortingngwriter.ToSsortingng(); } } public static T Deserialize(ssortingng xmlText) { if(Ssortingng.IsNullOrWhiteSpace(xmlText)) return default(T); using (SsortingngReader ssortingngReader = new System.IO.SsortingngReader(xmlText)) { var serializer = new XmlSerializer(typeof(T)); return (T)serializer.Deserialize(ssortingngReader); } }