2013-04-26 2 views
5

Xerces-J를 사용하여 XML 문서의 유효성을 검사하려고합니다.Xerces-j를 사용하여 XML 문서 유효성 검사

validator가 (schemalocation, nonamespaceschemalocationa 및 DOCTYPE 참조를 사용하여) 연관된 XSD 또는 DTD 파일을 선택하여 확인하기를 원합니다. 이러한 리소스의로드가 Resolver 클래스에 위임 될 수 있습니다.

그러나 내가 본 모든 샘플은 스키마에서 유효성 검사기를 만드는 것으로 시작합니다.

xerces가 XML 문서의 유효성을 검사하고 필요한 것을로드하도록 요청하거나 먼저 스키마 참조를 찾는 XML 파일을 구문 분석하고로드 한 다음 스키마의 유효성 검사기? 이상적인 세계에서는

발리는 또한 당신은 <! DOCTYPE 선언 또는 스키마 속성을 찾을 때 사용하기의 EntityResolver로 파서를 제공 XSD 1.1

답변

3

을 지원하는 것입니다. 가장 보편적 인 엔티티 해석자는 본질적으로 XML 파일이거나 공용 ID, 시스템 ID 및 URI의 실제 파일 사전을 정의하는 텍스트 파일 인 카탈로그 파일을 사용합니다. org.apache.xml.resolver 패키지를 참조하십시오. 하지만 자신 만의 EntityResolver 구현을 제공 할 수도 있습니다.

CatalogResolver resolver = new CatalogResolver(); 
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
dbf.setValidating(true); 
dbf.setFeature("http://apache.org/xml/features/validation/dynamic", true); 
DocumentBuilder parser = dbf.newDocumentBuilder(); 
parser.setEntityResolver(resolver); 
Document doc = parser.parse(someFile);