2010-02-22 3 views
1

XmlReader을 사용하여 제공된 스키마에 따라 XML 파일의 유효성을 검사합니다. 이를 위해 XmlReaderSettings.Schemas를 사용할 때 성능이 저하되고 사용할 여러 스키마를 지정하는 경우

나는 XmlReaderSettings의 인스턴스를 생성하고 ValidationType.SchemaValidationType의 설정과는 XxmlSchemaSet로 Schemas 속성입니다입니다. SR이 실제로 레거시 코드 인 StreamReader

이며, 아직도 내가 해결해야 할 많은 문제가

XmlReaderSettings rSettings = new XmlReaderSettings(); 
XmlSchemaSet schemaSet = new XmlSchemaSet(); 
schemaSet.Add(null, xsdPath1); 
schemaSet.Add(null, xsdPath2); 
schemaSet.Add(null, xsdPath3); 
rSettings.Schemas.Add(schemaSet); 

rSettings.ValidationType = ValidationType.Schema; 

XmlReader validatingReader = XmlReader.Create(sr, rSettings); 

같은 초안 코드입니다. 나는 schemaSet.Add(null, xsdPath2)가 고치고보기 흉하게 보인다는 것을 알고 있습니다.

내가 원하는 것은 3 개의 xsd 파일을 제공했기 때문에 예상되는 성능에 어떤 영향이 있습니까? xsd는 우선 순위의 내림차순으로 제공됩니다. 이 모든 XML 스키마는 버전이 지정되었으므로 폴백 메커니즘을 갖기 위해 이들 모두를 추가했습니다.

내가 생각하는 바는 JIT 컴파일러가 컴파일러에서만 xsd1이 XML 파일을 구문 분석하려고 시도하고 다음으로 이동하지 못하는 경우입니다. 나는 세 xsd 모두를 기억하기를 원하지 않는다.

이것은 혼란 스럽습니다. 여러 스키마 파일을 지정하는 경우 어떤 성능이 저하 될 수 있습니까?

레거시 코드베이스가 향상 될 것으로 예상되므로 성능이 항상 최상위에 있습니다.

답변

0

스키마를 많이 변경하지 않는다면 스키마를로드/컴파일하고 스키마 세트로 캐시에 추가하는 것이 좋습니다.

이렇게하면 유효성 검사가 필요한 문서를로드 할 때마다 스키마를 다시로드하거나 다시 컴파일 할 수 없습니다.

호프가 도움이 되었으면

관련 문제