C# xsd als eingebettete Ressource verwenden
Sukram
- programmiertechnik
0 Sukram
Hallo,
ich habe eine xsd als eingebettete Ressource in meinem Namespace.
Jetzt möchte ich diese benutzen um damit ein externes XML Dokument zu validieren.
Dazu benutze ich folgenden Code:
string xmlFileName = "test.xml";
string xsdFileName = "";
XmlReaderSettings settings = new XmlReaderSettings();
settings.ValidationType = ValidationType.Schema;
settings.Schemas.Add(null, xsdFileName);
XmlReader xmlReader = XmlReader.Create(new XmlTextReader(xmlFileName), settings);
try
{
XDocument xdoc = XDocument.Load(xmlReader);
MessageBox.Show(xdoc.ToString());
}
catch (XmlSchemaValidationException ex)
{
MessageBox.Show(ex.Message);
}
xsdFileName ist normalerweise dazu gedacht eine externe xsd einzubinden. Jetzt ist diese ja aber eingebettet und ich weiß nicht, wie ich das nun angeben soll.
System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("namespace.text.xsd")
gibt ja leider nur einen Stream zurück. Oder kann ich das auch irgendwie bei
settings.Schema.Add als Stream übergeben?
Gruß
Sukram
Hallo,
habe es selber gelöst:
string xmlFileName = "test.xml";
System.IO.Stream xsdresource = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("Namespace.test.xsd");
XmlReaderSettings settings = new XmlReaderSettings();
settings.ValidationType = ValidationType.Schema;
settings.Schemas.Add(null, XmlReader.Create(xsdresource));
XmlReader xmlReader = XmlReader.Create(new XmlTextReader(xmlFileName), settings);
try
{
XDocument xdoc = XDocument.Load(xmlReader);
MessageBox.Show(xdoc.ToString());
}
catch (XmlSchemaValidationException ex)
{
MessageBox.Show(ex.Message);
}