2012-05-23 5 views
1

XSD 스키마를 사용하여 XML 형식의 유효성을 검사하는 방법에 대한 질문이 있습니다.XSD 스키마 유효성 검사

이미 XSD 스키마를 사용하여 XML 형식을 확인하는 프로그램을 성공적으로 완료했습니다. 그러나 현재 프로젝트의 주요 위치에 xx.xsd를 넣어야합니다. 어쨌든 xsd 스키마를 어셈블리에 포함하여 xxx.xsd를 실행 어셈블리의 동일한 위치에 항상 둘 필요가 없도록합니다. 프로젝트의 리소스에 포함하려고 시도했지만이 resgen xxx.xsd와 같은 VS 명령 프롬프트를 사용할 때 XSD 파일을 resgen 할 수없는 것 같습니다. 확장 프로그램이이 명령으로 지원되지 않는다고합니다.

이 문제를 해결할 수있는 다른 방법이 있습니까?

모든 의견을 환영합니다.

답변

2

1 단계 : 마우스 오른쪽 XSD 파일에 대한 속성을 클릭하고 빌드 작업에서, "포함 리소스"

를 선택하면 일반적으로

2 단계 것과 마찬가지로 클래스 라이브러리 프로젝트에 XSD 추가 3 단계 :

TextReader schemaStream = 
    new StreamReader(Assembly.GetExecutingAssembly().GetManifestResourceStream(xmlSchema)); 
XmlSchemaSet schemaSet = new XmlSchemaSet() ; 
schemaSet.Add("",XmlReader.Create(schemaStream)); 
+0

감사합니다. 귀하의 솔루션이 나를 위해 작동합니다. –

3

XmlSchemaSet schemaSet = new XmlSchemaSet() ; 
schemaSet.Add("", XmlReader.Create(xmlSchema)); 

에서 다음과 같이 코드를 수정

하나의 XSD 만 (외부 참조 없음) 다루는 경우 @Romil의 대답은 필요한 것입니다. 그러나 구성 요소 화 된 XSD (xsd : include/import/redefine을 통해 링크 된 XSD 세트)를 사용하려고하면 솔루션이 작동하지 않습니다. This post on SO은 올바르게 해결하는 방법을 보여줍니다. 자신의 리졸버를 구축하고 사용해야합니다. 임베디드 리소스에서 이러한 참조를 제공 할 수 있어야하며, 또한 매우 중요한 경우 기본 URI (일반적으로 일부 독점 스키마를 사용하여 구성된 URL)를 제공해야합니다. 첫 번째 독자를 만듭니다.

+0

감사합니다. Petru. 내 프로젝트에는 단 하나의 XSD 만 있으므로 Romil의 솔루션이 효과가 있습니다. 귀하의 제안에 감사드립니다. 앞으로 나에게 도움이 될 것입니다. –