2010-07-25 2 views

답변

2

당신은 아마 매우 쉽게 뭔가를 작성하고 개미에서 그것을 호출 할 수 있습니다

import java.io.File; 
import java.io.IOException; 

import javax.xml.bind.JAXBContext; 
import javax.xml.bind.SchemaOutputResolver; 
import javax.xml.transform.Result; 
import javax.xml.transform.stream.StreamResult; 

public class SchemaGenerator { 

    public static void main(String[] args) throws Exception { 
     String contextPath = args[0]; 
     String outputDir = args[1]; 
     JAXBContext jc = JAXBContext.newInstance(contextPath); 
     jc.generateSchema(new MySchemaOutputResolver(schemaFileName)); 
    } 

    private static class MySchemaOutputResolver extends SchemaOutputResolver { 

     private String outputDir; 

     public MySchemaOutputResolver(String outputDir) { 
      this.outputDir = outputDir; 
     } 

     public Result createOutput(String namespaceURI, String suggestedFileName) throws IOException { 
      File file = new File(outputDir + "/" + suggestedFileName); 
      StreamResult result = new StreamResult(file); 
      result.setSystemId(file.toURI().toURL().toString()); 
      return result; 
     } 

    } 

} 

당신의 컨텍스트 경로에서 당신이 JAXBContext에 포함되는 클래스의 목록이있는 jaxb.index 파일이 필요합니다. 또는 클래스 이름을 SchemaGenerator 클래스에 전달하고 ClassLoader를 통해 클래스 이름을로드 할 수 있습니다.