2012-04-02 13 views
2

Ich habe einen Webservice, der spezifische XML-Daten erhält, für die in der Datei kein Schema angegeben ist. Ich habe XSD-Schemas in meinem Projekt, die verwendet werden, um die erhaltenen XML-Dateien gegen sie zu testen.Validieren Sie einen XML-Code für ein bestimmtes XSD-Schema

Das Problem ist, dass, was auch immer ich mache, der Validator scheint die Dateien zu akzeptieren, auch wenn sie nicht gültig sind.

Der Code, den ich verwendet, ist dies (einige Teile weggelassen, um es einfacher zu machen):

var schemaReader = XmlReader.Create(new StringReader(xmlSchemeInput)); 
var xmlSchema = XmlSchema.Read(schemaReader, ValidationHandler); 

var xmlReaderSettings = new XmlReaderSettings(); 
xmlReaderSettings.Schemas.Add(xmlSchema); 
xmlReaderSettings.ValidationEventHandler += ValidationHandler; 
xmlReaderSettings.ValidationType = ValidationType.Schema; 
xmlReaderSettings.ValidationFlags |= XmlSchemaValidationFlags.ProcessIdentityConstraints; 
xmlReaderSettings.ValidationFlags |= XmlSchemaValidationFlags.ReportValidationWarnings; 
xmlReaderSettings.ValidationFlags |= XmlSchemaValidationFlags.ProcessSchemaLocation; 

using(var xmlReader = XmlReader.Create(new StringReader(xmlInput), xmlReaderSettings)) 
{ 
    while (xmlReader.Read()) { } 
} 

// return if the xml is valid or not 

ich mehrere Lösungen mit einem Inline angegebenen Schema, die große Arbeit, aber mit einem Schema gefunden habe angegeben, wie das (was ich annehmen sollte, sollte funktionieren) kann ich anscheinend nicht finden.

Mache ich etwas falsch? Oder liege ich falsch, wenn ich annehme, dass es so funktioniert?

Danke!

Antwort

0

Versuchen Zugabe

xmlReaderSettings.Schemas.Compile() 

nach

xmlReaderSettings.Schemas.Add(xmlSchema); 

für mich in dieser Situation gearbeitet.

Verwandte Themen