2011-11-11 2 views
2

xsd.exe (VS 2010 명령 프롬프트), 을 사용하여 C# 클래스 폼 scham을 생성했지만 XML 파일의 클래스를 serialize 할 때 스키마에 대한 항목이없는 파일이 있습니다.xml 스키마에서 생성 된 CS 클래스

직렬화 된 XML :

<?xml version="1.0" encoding="utf-16"?> 
<Dokumenty xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" idSystemuLokalnego="ASD" dataUtworzenia="0001-01-01T00:00:00"> 
<Wniosek> 
    <Beneficjent /> 
</Wniosek> 

내가 스키마를 사용하여 코드를 확인하려고 : 추가 정보 :

 //Serilalize xml to string 
     StringWriter sw = new StringWriter(); 
     XmlTextWriter xw = new XmlTextWriter(sw); 
     x.Serialize(xw, doc); 
     String xml = sw.ToString(); 

     StringReader sr = new StringReader(xml); 
     XmlTextReader xtr = new XmlTextReader(sr); 
     XmlReaderSettings settings = new XmlReaderSettings(); 
     settings.Schemas.Add("", "schemas\\SimWniosekApl_v2.0.xsd"); 
     settings.ValidationType = ValidationType.Schema; 

     //XmlReader reader = XmlReader.Create(xtr); 
     XmlDocument document = new XmlDocument(); 
     document.Load(xtr); 

     ValidationEventHandler eventHandler = new ValidationEventHandler(ValidationHandler); 

     // the following call to Validate succeeds. 
     document.Validate(eventHandler); 

그것은 예외와 함께 실패 문서에 XmlSchemaSet null인지 또는 스키마가 없는지 여부 Validate를 호출하기 전에 스키마 정보를 제공하십시오.

내가 뭘 잘못 했니?

답변

0

독자를 만들 때 XmlReaderSettings를 적용해야합니다.

코드는 설정에 아무런 영향을주지 않습니다. 설정이 작성되기 전에 이미 독자가 작성되었습니다. 코드는 단순히 설정을 만든 다음 잊어 버립니다.

StringReader sr = new StringReader(xml); 
    //XmlTextReader xtr = new XmlTextReader(sr); 
    XmlReaderSettings settings = new XmlReaderSettings(); 
    settings.Schemas.Add("", "schemas\\SimWniosekApl_v2.0.xsd"); 
    settings.ValidationType = ValidationType.Schema; 

    XmlReader reader = XmlReader.Create(xtr,settings); 
    XmlDocument document = new XmlDocument(); 
    document.Load(reader); 

    ValidationEventHandler eventHandler = new ValidationEventHandler(ValidationHandler); 
    document.Validate(eventHandler); 

여기에 전체 예제가있다 :
http://msdn.microsoft.com/en-us/library/ms162371.aspx

관련 문제