2012-04-02 51 views
2

我有一個web服務,它獲取特定的XML,該XML沒有在文件本身中指定的模式。 我的項目中有XSD模式,它將用於測試獲取的XML文件。根據特定的XSD模式驗證XML

問題是,無論我做驗證程序似乎接受文件,即使它們無效。

我正在使用的代碼是這樣的(略,使其更容易一些零部件)

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 

我發現了幾個解決方案,內嵌指定的模式,其工作的偉大,但有一個模式等確定這(我認爲應該工作)我似乎無法找到任何。

我做錯了什麼?或者我只是錯誤地認爲這是它應該如何工作?

謝謝!

回答

0

嘗試增加

xmlReaderSettings.Schemas.Compile() 

xmlReaderSettings.Schemas.Add(xmlSchema); 

在這種情況下爲我工作。