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();
//d文档跟结点country
Element rootElement = res.addElement("country");
//l根节点d属性nameQgؓ"中国"
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 ++){
//获取文g名,L文g扩展?/font>
String[] name = files[i].getName().split("\\.");
//在根l点下添加子节点province
Element childElement = rootElement.addElement("province");
//d属性nameQgؓ文g?/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();
//遍历所有的l点
this.visitAll(root, childElement);
}
//格式化即输出的xmlQ让它看h整齐?/font>
OutputFormat format = OutputFormat.createPrettyPrint();
/*document中的内容写入文g?*/
XMLWriter writer = new XMLWriter(new FileWriter(new File(filename)),format);
writer.write(res);
writer.close();
}
public void visitAll(Element root, Element child){
// 枚D所有子节点
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("城市?)))
{
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){
//LI格和全角空?/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();
}
}
}