예를 들어 노드 구조 또는 이와 비슷한 것을 유효성 검사기에서 얻을 수 있습니까? 청취자 나 처리기와 같은 것. 예외로는 충분하지 않습니다. 오류가 발생한 노드를 선택해야합니다. 그게 내가 지금까지 구축 한 것.색소 검사기에서 더 많은 정보를 얻으십시오
def factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI)
def schema = factory.newSchema(new StreamSource(new FileReader("src/import.xsd")))
def validator = schema.newValidator()
try {
validator.validate(new StreamSource(new FileReader("src/import.xml")))
println "everything is fine"
} catch(SAXException e) {
println e
}
감사합니다.
이제 XML의 DOM이 생겼으나 오류의 위치를 어떻게 알 수 있습니까? 나는 다음과 같은 것을 의미합니다 : cvc-length-valid : 길이 '6'의 값 'aaaaaa'는 'stringLength5'유형의 길이 '5'에 대해면 유효하지 않습니다. – codevour
SAXException은 오류의 줄 번호와 열 번호를 추적하므로 요소가 아니라 원본 파일과 다시 관련됩니다. 응답 한 후에는 소스를 검사하여 구현 유형으로 전송하여 더 많은 정보를 얻을 수 있는지 알아 보았지만 실제로는 그렇지 않습니다. 내가 말할 수있는 것은 당신의 고통을 느낍니다. 그것은 API에서 확실한 감독입니다. – kdgregory
그리고 확실하지 않은 경우 : 'db.parse()'호출은 try/catch로 래핑되어야합니다. – kdgregory