2009-05-08 6 views
1

Ich versuche, für eine BizTalk-Anwendung in Unit-Tests zu erhalten arbeite ich an, nach dem Beispiel in Michael Stephensons blog post und schien immer irgendwoSchema-Validierung Unterschied zwischen BizTalk IDE und XmlReader

Dann habe ich zu ein Fehler auf der ganzen Linie, die ich zu einem „ungültig“ XML-Testdatei verfolgt zurück war ich mit, aber das vorging meine Validierung gegen Schema Unit-Test ...
-Grund falsche Namespace ist

Meine Verwirrung Warum denkt der XmlReader, dass das XML im Vergleich zum Schema gültig ist, aber wenn ich die BizTalk-IDE verwende "Validate Instance" Option, die ich die Fehler bekommen ...
... Fehler BEC2004: Validate Instanz für Schema FromFrontOffice.xsd fehlgeschlagen, Datei: ...

XmlSchema schema = XmlSchema.Read(schemaStream, null); 
XmlReaderSettings xmlReaderSettings = new XmlReaderSettings(); 
xmlReaderSettings.Schemas.Add(schema); 
xmlReaderSettings.ValidationType = ValidationType.Schema; 
xmlReaderSettings.ValidationEventHandler += ValidationEventHandler; 
XmlReader xmlReader = XmlReader.Create(xmlStream, xmlReaderSettings); 
while (xmlReader.Read()) 

private void ValidationEventHandler(object sender, ValidationEventArgs args) 
{ 
    if (args.Exception == null) return; 
    _IsValid = false; 
} 
+0

Wie sieht Ihr Schema und Ihr Instanzdokument aus? – tomasr

+0

Welche Version von BizTalk verwenden Sie? In der Regel wird die BizTalk-Schemaüberprüfung anders durchgeführt (mit BizTalk-Bibliotheken), sodass Sie möglicherweise andere Ergebnisse erhalten als die standardmäßigen .NET-Überprüfungsmethoden. –

+0

Ich benutze 2006 R2 – SteveC

Antwort

2

ich denke, es sortiert habe. .. Trick scheint ValidationFlags zu verwenden

xmlReaderSettings.ValidationFlags = 
    XmlSchemaValidationFlags.ReportValidationWarnings | 
    XmlSchemaValidationFlags.ProcessIdentityConstraints | 
    XmlSchemaValidationFlags.ProcessInlineSchema | 
    XmlSchemaValidationFlags.ProcessSchemaLocation;