2009-06-09 11 views
0

Actuellement, j'ai un fichier xml qui ressemble à ceci ...Génération XSD pour XML sérialisé

 

<ArrayOfService> 
    <Service> 
     <Name> 
      Something 
     </Name> 
     <Id> 
      8003 
     </Id> 
    </Service> 
</ArrayOfService> 
 

Ceci est généré automatiquement à partir d'une classe qui ressemble à ceci ...


public class Service{ 
    public string Name; 
    public int Id; 

    public Service(){ 
    } 
} 

pour activer la classe en XML, je l'utilise ...


XmlSerializer xs = new XmlSerializer(typeof(Service)); 
xs.Serialize(context.Response.OutputStream, FunctionReturnsTypeService()); 

Est-il possible aussi de générer automatiquement un XSD comme celui-ci?

EDIT:

Aussi, est-il possible d'ajouter ce schéma au xml que je suis sérialisation il?

+0

que voulez-vous dire "ajouter ce schéma au XML"? Que voulez-vous que la sortie ressemble, à contenir? – Cheeso

+0

Je veux que le fichier XML généré ait quelque chose comme ceci en haut: apandit

+0

xmlns = "foo" indique un espace de noms, pas un schéma. Si vous voulez un espace de noms XML spécifique à utiliser lors de la sérialisation d'un type, vous pouvez l'utiliser comme attribut du type [XmlType (namespace = « Foo »)]. – Cheeso

Répondre

2

L'outil xsd.exe (% netsdk20% \ bin \ xsd.exe) infère un type d'un document XML.

(Vous pouvez également utiliser l'option/c pour générer des classes à partir d'un document XML ou schéma.)

Si vous souhaitez intégrer une référence à un schéma dans un document XML, puis voir ici: http://www.tech-archive.net/Archive/DotNet/microsoft.public.dotnet.xml/2006-12/msg00040.html

Résumé:
décorer un membre de votre type avec l'attribut XmlAttribute, en spécifiant "schemaLocation" comme nom de l'attr, et "http://www.w3.org/2001/XMLSchema-instance" comme espace de nom pour cet attribut. Comme cet exemple en C#

[System.Xml.Serialization.XmlAttributeAttribute("schemaLocation", 
    Namespace = System.Xml.Schema.XmlSchema.InstanceNamespace)] 
private string xsiSchemaLocation = "YourSchema.xsd"; 
+0

l'outil XSD fonctionne, mais pas l'option/c (qui est pour générer des classes). J'ai juste tapé xsd myfile.xml et il a généré le schéma. Impressionnant. Maintenant, pour la deuxième partie de ma question ..: D – apandit

+0

droit -/c génère des classes. Oups! – Cheeso

+0

Pour la génération de schéma mouche, http://stackoverflow.com/questions/336988/xml-serialization-and-schema-without-xsd-exe – apandit

Questions connexes