最近有个需求需要解析一个.g类型的文件,并且修改里面的属性值,重新保存。文件结构和xml很类似
首先尝试了用jsoup来解析,但是用parse转换后,会生成html的标签,而且会把文件里标签名全部改成小写。
然后用了dom4j来解析:
//path 文件路径
public static void renameHTMLTitle(String path) throws IOException, DocumentException {
File f = new File(path);
if (f.exists()) {
SAXReader reader = new SAXReader();
Document document = reader.read(f);
Element rootElem = document.getRootElement();
Element layEleme = rootElem.element("Layer");
List contactElem = layEleme.elements("ConnectLine");//ConnectLine
for(int i=0;i<contactElem.size();i++){
Element conele = (Element) contactElem.get(i);
//获取节点下某个属性的值
String link = conele.attribute("link").getValue();
String[] result = link.split(";");
Boolean flag = true;
//下面是我自己的处理逻辑方法
for (int k = 0; k < result.length; k++) {
String[] sps = result[k].split(",");
String linksid = sps[2];
if(flag){
String str[] = {"Bus","CBreaker","Disconnector","Transformer2","Transformer3","GroundDisconnector"};
List <String> lists = Arrays.asList(str);
for(String value:lists){
flag = chngeData(layEleme,conele,value,linksid);
if(!flag){
break;
}
}
}else{
break;
}
}
}
XMLWriter writer = new XMLWriter(new FileWriter("E:\\Tianyuan\\contact.g"));
writer.write(document);
writer.close();
}
}