2009-12-10 4 views
4

À l'heure actuelle, nous avons du code statique dans un fichier de schéma XML. Mais maintenant, nous voulons embedd ce fichierIntégrer un fichier xsd en C#

code en ce moment:

XmlTextReader reader = new XmlTextReader("schema.xsd"); 
XmlSchema schema = XMLSchema.Read(xReader, new ValidationEventHandler(ValidationEventHandler)); 

Mais maintenant, je veux l'avoir intégré dans un fichier de Resouce. Alors, comment je fais.

XmlTextReader reader = new XmlTextReader(Resouces.Schema); 
XmlSchema schema = XMLSchema.Read(xReader, new ValidationEventHandler(ValidationEventHandler)); 

Ce n'est pas le cas.

+0

Cela semble fonctionner. Mais ai-je introduit quelque chose de mauvais ici? StringReader xsdFile = new StringReader (Resources.Schema.ToString()); XmlTextReader xReader = new XmlTextReader (xsdFile); – Kristoffer

Répondre

5
// Get the assembly that contains the embedded schema 
var assembly = Assembly.GetExecutingAssembly(); 
using (var stream = assembly.GetManifestResourceStream("namespace.schema.xsd")) 
using (var reader = XmlReader.Create(stream)) 
{ 
    XmlSchema schema = XMLSchema.Read(
     reader, 
     new ValidationEventHandler(ValidationEventHandler)); 
} 
0

Utilisation:

Stream xsdStream = Assembly.GetExecutingAssembly().GetManifestResourceStream("schema.xsd"); 
1

Si vous avez un seul fichier, extraire juste (GetManifestResourceStream) et utiliser directement. Si vous avez plusieurs fichiers associés, vous devez écrire un XmlResolver. J'ai un résolveur basé sur resx quelque part ... Vous définissez alors ceci comme XmlResolver ou un XmlReaderSettings, et passez votre XmlReaderSettings en appelant XmlReader.Create.

Questions connexes