Java⽣成⾃定义xml⽂件_⾃定义xml,然后根据xml⽣成java类设计的思想其实很简单:1、使⽤xml定义⽣成规则;2使⽤Document解析xml然后⽣成java类。
⼀、xml定义规则。
本实例使⽤dtd来定义xml⽂件的标签。
config.dtd⽂件:
config. xml⽂件:
这样在l中配置了⼀个gen标签(该标签为xml的根元素,在dtd中定义了),由于dtd⽂件中定义了gen标签⾥有ID属性id,故在java中可以使⽤getElementById来获得该元素,进⽽获得该元素的其他属性。gen标签的author元素⽤来⽣成java类的注释。
service标签中的dbname和prefix都是⽤来⽣成类的组成部分。规则隐匿在java类内部。
⼆、解析xml⽣成java类。
1.得到xml的Document:
public Document getDocument(InputStream inputStream,File file){
InputSource inputSource = new InputSource(inputStream);
DocumentBuilderFactory factory = wInstance();
try { //这两⾏决定可以根据id得到element
factory.setNamespaceAware(true);
factory.setValidating(true);
DocumentBuilder builder = wDocumentBuilder();
return builder.parse(inputSource);
} catch (Exception e) {
e.printStackTrace();
System.out.println("it occurs wrong in the ");
return null;
}
}inputStream为l⽂件流。file为以后扩展使⽤。
2.解析xml:
主要需要⽤到的⼏个⽅法
InputStream inputStream = new FileInputStream(file);
Document doc = getDocument(inputStream,file);
Element gen = ElementById("generator");
String author = Attribute("author");
NodeList serviceList = ElementsByTagName("service");
java xml是什么if(serviceList!=null&&Length()>0){
for(int i=0;i<=Length()-1;i++){
Element service = (Element) serviceList.item(i);
String dbname = Attribute("dbname");
String prefix = Attribute("prefix");
...
}
System.out.println("");
} 3.⽣成java⽂件:
最后⼀步就是使⽤IO流,并根据得到的这些元素,根据⾃定义的规则拼成Java的内容,然后⽤流写出即可。
其实这是最简单的思路。有很⼤的优化的可能性。⽐如使⽤Schema替代dtd;使⽤Java⽂件做模版,先读进来然后使⽤正则表达式进⾏相应替换后再写出即可。