2009-05-08 8 views
1

Je suis en train d'entrer dans des tests unitaires pour une application BizTalk je travaille, à l'instar de Michael Stephensons blog post et semblait se rendre quelque partdifférence de validation du schéma entre IDE BizTalk et XmlReader

Je suis une erreur sur toute la ligne, que je pisté à un fichier de test XML « invalide » j'utilisais, mais ce repassais ma validation contre test unitaire de schéma ...
-raison d'être espace de noms incorrect

mon étonnement est pourquoi XmlReader pense que le XML est valide par rapport au schéma, mais si j'utilise l'IDE BizTalk option "Valider instance" Je reçois les erreurs ...
... erreur BEC2004: Valider instance a échoué pour le schéma FromFrontOffice.xsd, fichier: ...

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

À quoi ressemble votre schéma et votre document d'instance? – tomasr

+0

Quelle version de BizTalk utilisez-vous? En règle générale, la validation du schéma BizTalk est effectuée différemment (à l'aide de bibliothèques BizTalk), ce qui peut vous donner des résultats différents des méthodes de validation .NET standard. –

+0

J'utilise 2006 R2 – SteveC

Répondre

2

pense que j'ai ont réglé. .. truc semble utiliser ValidationFlags

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