2012-04-02 3 views
2

파일 자체에 지정된 스키마가없는 특정 XML을 가져 오는 웹 서비스가 있습니다. 내 프로젝트에서 얻은 XML 파일을 테스트하는 데 사용할 XSD 스키마가 있습니다.특정 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.Add(xmlSchema); 

그 상황에서 나를 위해 일한

xmlReaderSettings.Schemas.Compile() 

후 추가.

관련 문제