2011-08-02 5 views
1

로컬 XSD에 대해 XML의 유효성을 검사해야하며이 프로세스가 실행되는 대상 컴퓨터에 인터넷 연결이 없습니다. 아래 코드는 다음과 같습니다.java.net.ConnectException : XSD에 대한 XSD 유효성 검사 : 로컬 컴퓨터

SchemaFactory factory = SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema"); 

File schemaLocation = new File(xsd); 

Schema schema = factory.newSchema(schemaLocation); 

Validator validator = schema.newValidator(); 

Source source = new StreamSource(new BufferedInputStream(new FileInputStream(new File(xml)))); 

validator.validate(source); 

validate()가 호출되면 항상 java.net.ConnectException이 발생합니다.

정확하게 수행되지 않은 것을 알려주십시오.

많은 감사. Abhishek

+0

XML과 스키마를 보면 도움이 될 것입니다. 스키마 조각, DTD 등의 외부 위치에 대한 참조가있을 수 있습니다. 찾아서 로컬 사본을 다운로드하고 로컬 시스템 경로에 대한 참조를 변경해야합니다. –

답변

1

여기 Mads의 의견에 동의합니다. 인터넷에 나가는 연결을 시도하는 많은 참조가있을 수 있으며, 로컬 복사본을 다운로드해야합니다. 그러나 XML이나 스키마 파일 내에서 참조를 변경하는 대신 코드 대신 EntityResolver을 제공하면 인터넷에 연결하는 대신 로컬 복사본의 내용을 반환 할 수 있습니다. (나는 이전에 http://blogger.ziesemer.com/2009/01/xml-and-xslt-tips-and-tricks-for-java.html#InputValidation에서 이것에 대해 조금 썼다.)

그러나, 귀하의 경우, 당신은 Validator를 사용하는 대신 Validator.setResourceResolver(...)하고 있기 때문에 - validate를 호출하기 전에, 그리고 패스의 LSResourceResolver.

관련 문제