import java.io.File;
import java.io.FileWriter;
import java.util.Iterator;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
/**
* @author canvas
*
*/
public class GIS {
public void createXMLFile(String filename) throws Exception{
//浣跨敤杈呭姪鏂規(guī)硶鍒涘緩鏂囨。瀵硅薄
Document res = DocumentHelper.createDocument();
//娣誨姞鏂囨。璺熺粨鐐筩ountry
Element rootElement = res.addElement("country");
//緇欐牴鑺傜偣娣誨姞灞炴ame錛屽間負(fù)"涓浗"
rootElement.addAttribute("name", "涓浗");
//鎵撳紑鐩綍
File file = new File("G:\\workspace\\jwd\\jwd");
//鎵撳紑鐩綍涓嬫墍鏈夌殑xml鏂囨。
File[] files = file.listFiles();
//渚濇鎿嶄綔姣忎釜xml鏂囨。
for(int i = 0; i < files.length; i ++){
//鑾峰彇鏂囦歡鍚嶏紝鍘繪帀鏂囦歡鎵╁睍鍚?/font>
String[] name = files[i].getName().split("\\.");
//鍦ㄦ牴緇撶偣涓嬫坊鍔犲瓙鑺傜偣province
Element childElement = rootElement.addElement("province");
//娣誨姞灞炴ame錛屽間負(fù)鏂囦歡鍚?/font>
childElement.addAttribute("name", name[0].trim());
//鍒涘緩reader
SAXReader reader = new SAXReader();
//鏍規(guī)嵁瀹為檯鎯呭喌璁劇疆緙栫爜
reader.setEncoding("GBK");
Document doc = reader.read(files[i]);
//鑾峰緱xml鏂囨。鐨勬牴鑺傜偣
Element root = doc.getRootElement();
//閬嶅巻鎵鏈夌殑緇撶偣
this.visitAll(root, childElement);
}
//鏍煎紡鍖栧嵆灝嗚緭鍑虹殑xml錛岃瀹冪湅璧鋒潵鏁撮綈鐐?/font>
OutputFormat format = OutputFormat.createPrettyPrint();
/*灝哾ocument涓殑鍐呭鍐欏叆鏂囦歡涓?*/
XMLWriter writer = new XMLWriter(new FileWriter(new File(filename)),format);
writer.write(res);
writer.close();
}
public void visitAll(Element root, Element child){
// 鏋氫婦鎵鏈夊瓙鑺傜偣
for ( Iterator i = root.elementIterator(); i.hasNext(); ) {
Element element = (Element) i.next();
//System.out.println(stringTrim(element.getText()));
/*if(this.stringTrim(element.getTextTrim()).equals("")){
return;
}
else {
Element tmp = child.addElement("city");
visitAll(element, tmp);
}*/
Iterator j = element.elementIterator();
Element tmpElement = (Element)j.next();
if(!(stringTrim(tmpElement.getTextTrim()).equals("鍩庡競(jìng)鍚?)))
{
Element tmp = child.addElement("city");
tmp.addAttribute("name",
stringTrim(tmpElement.getTextTrim()).trim());
tmpElement = (Element)j.next();
tmp.addAttribute("longitude",
stringTrim(tmpElement.getTextTrim()).trim());
tmpElement = (Element)j.next();
tmp.addAttribute("latitude",
stringTrim(tmpElement.getTextTrim()).trim());
}
}
}
public String stringTrim(String str){
//鍘繪帀絀烘牸鍜屽叏瑙掔┖鏍?/font>
String[] tmp = str.split("\\s| ");
StringBuffer sb = new StringBuffer();
for(int i = 0; i < tmp.length; i ++){
sb.append(tmp[i].trim());
}
return sb.toString();
}
/**
* @param args
*/
public static void main(String[] args) {
try {
new GIS().createXMLFile("d:\\GI-China.xml");
} catch (Exception e) {
e.printStackTrace();
}
}
}