2013-08-14 4 views
0

Je ne savais pas que je peux utiliser le schéma XSD pour sérialiser le fichier XML reçu. J'ai utilisé xsd.exe pour générer cs classe à partir du fichier XSD et maintenant j'ai besoin d'utiliser cette classe pour obtenir des données dans les propriétés de classe, mais une chose me manque et j'ai besoin d'aide.Comment utiliser l'objet XmlDocument au lieu de lire le fichier XML à partir du lecteur?

Voici le code:

private void ParseDataFromXmlDocument_UsingSerializerClass(XmlDocument doc) 
{ 
XmlSerializer ser = new XmlSerializer(typeof(ClassFromXsd)); 

      string filename = Path.Combine("C:\\myxmls\\test", "xmlname.xml"); 

      ClassFromXsdmyClass = ser.Deserialize(new FileStream(filename, FileMode.Open)) as ClassFromXsd; 

      if (myClass != null) 
      { 
       // to do 
      } 
... 

Ici, j'utiliser le fichier XML à partir du lecteur. Et je veux utiliser ce XmlDocument à partir du paramètre que j'ai passé. Alors, comment adapter ce code pour utiliser doc au lieu de XML à partir du lecteur?

+0

Et il dit pourquoi ... – LunicLynx

Répondre

2

Vous pouvez écrire le XmlDocument dans un MemoryStream, puis le désérialiser comme vous l'avez déjà fait.

XmlDocument doc = new XmlDocument(); 
ClassFromXsd obj = null; 
using (var s = new MemoryStream()) 
{ 
    doc.Save(s); 
    var ser = new XmlSerializer(typeof (ClassFromXsd)); 
    s.Seek(0, SeekOrigin.Begin); 
    obj = (ClassFromXsd)ser.Deserialize(s); 
} 
+0

Merci. Juste une sous-question comme je ne savais pas jusqu'à aujourd'hui juste pour confirmer. J'ai reçu le fichier XSD et utilisé xsd.exe pour obtenir la classe cs maintenant quand je reçois XML et sérialiser comme vous écrivez en réponse à toutes les données dans cette classe devrait être rempli comme lorsque vous utilisez ORM? – 1110

+0

Si vous voulez dire ORM dans Object Relational Mapper alors oui, si vous le comparez à un ORM dans un sens DB alors je dirais non car il n'y a pas de possibilité comparable comme supprimer ou mettre à jour sans réécrire le fichier entier. – LunicLynx

+0

Aussi, je remettrais en question toute l'approche d'aller de XmlDocument à XmlSerializer. Cela n'a de sens que tant que vous ne pouvez vraiment pas changer la façon dont cette fonction est invoquée. (pas en mesure de changer la signature) – LunicLynx

Questions connexes