进行dom4j解析,首先需要下载jar包:dom4j-1.6.1.jar,fastjson-1.2.41.jar
xml解析中的代码:
/******************解析传送过来的json数组串***************************/
//将获取的数据转成sting
String string = strmap.get(key).toString();
//将json串中的数据转换成json对象集合
jsonModels = JSON.parseArray(string,JsonModel.class);
for (JsonModel jsonModel : jsonModels) {
//resultshow集合
resultshows = jsonModel.getResultshows();
//istongji 集合
tongjiFields = jsonModel.getTongjiFields();
//isselect集合
selectFields = jsonModel.getSelectFields();
}
/*********************获取并修改xml***************************/
//创建saxReader对象
SAXReader reader = new SAXReader();
//通过reader方式得到文件并转换成document
Document documents = reader.read(new File(path));
//获取根节点元素对象
Element rootElement = documents.getRootElement();
//获取根节点下的Model节点
Element module = rootElement.element("Module");
//获取Module下的module节点
Element modules = module.element("module");
//获取module下的modulelayers
Element modulelayers = modules.element("modulelayers");
//获取modulelayers下的modulelayer集合
List<Element> elements = modulelayers.elements("modulelayer");
/* //新增
module.addElement("节点1");
module.addElement("节点2", "节点2数值");
//修改节点值
module.setText("节点值");
//删除(通过上一级删除)
rootElement.remove(module);*/
for (int i = 0; i < elements.size(); i++) {
//modulelayer下的param集合
List<Element> params = elements.get(i).elements("param");
for (int j = 0; j < params.size(); j++) {
//给节点设置值
element.setText("ffff");
//给节点新增属性
element.addAttribute("test", "111");
//获取节点中的属性
Attribute resultshow = params.get(j).attribute("resultshow");
Attribute isselect = params.get(j).attribute("isselect");
Attribute istongji = params.get(j).attribute("istongji");
//给节点中的属性设置值
resultshow.setValue(resultshows.get(j));
isselect.setValue(selectFields.get(j));
istongji.setValue(tongjiFields.get(j));
//删除节点属性
element.remove(resultshow);
}
}
/**********************修改后的xml输出************************/
//输出格式
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("UTF-8");
//指定输出文件以及格式
XMLWriter writer = new XMLWriter(new OutputStreamWriter(new FileOutputStream(new File(path)),"UTF-8"), format);
writer.write(document);
writer.close();
writer.close();
xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<MapConfig>
<Module describe="模块配置">
<module id="1">
<modulelayers id="1">
<modulelayer id="0">
<param resultshow="1" isselect="2" istongji="3"/>
<param resultshow="4" isselect="5" istongji="6"/>
<param resultshow="7" isselect="8" istongji="9"/>
<param resultshow="10" isselect="11" istongji="12"/>
</modulelayer>
<modulelayer id="1">
<param resultshow="13" isselect="14" istongji="15"/>
<param resultshow="16" isselect="17" istongji="18"/>
<param resultshow="19" isselect="20" istongji="21"/>
<param resultshow="22" isselect="23" istongji="24"/>
</modulelayer>
</modulelayers>
</module>
</Module>
</MapConfig>
json的对象数组:
public class JsonModel {
private List<String> fieldalias;
private String layernum;
private String layerimg;
private List<String> tongjiFields;
private List<String> filedstypes;
private List<String> oldField;
private List<String> resultshows;
private List<String> selectFields;
private String isvisible;
private String layername;
public List<String> getFieldalias() {
return fieldalias;
}
public void setFieldalias(List<String> fieldalias) {
this.fieldalias = fieldalias;
}
public String getLayernum() {
return layernum;
}
public void setLayernum(String layernum) {
this.layernum = layernum;
}
public String getLayerimg() {
return layerimg;
}
public void setLayerimg(String layerimg) {
this.layerimg = layerimg;
}
public List<String> getTongjiFields() {
return tongjiFields;
}
public void setTongjiFields(List<String> tongjiFields) {
this.tongjiFields = tongjiFields;
}
public List<String> getFiledstypes() {
return filedstypes;
}
public void setFiledstypes(List<String> filedstypes) {
this.filedstypes = filedstypes;
}
public List<String> getOldField() {
return oldField;
}
public void setOldField(List<String> oldField) {
this.oldField = oldField;
}
public List<String> getResultshows() {
return resultshows;
}
public void setResultshows(List<String> resultshows) {
this.resultshows = resultshows;
}
public List<String> getSelectFields() {
return selectFields;
}
public void setSelectFields(List<String> selectFields) {
this.selectFields = selectFields;
}
public String getIsvisible() {
return isvisible;
}
public void setIsvisible(String isvisible) {
this.isvisible = isvisible;
}
public String getLayername() {
return layername;
}
public void setLayername(String layername) {
this.layername = layername;
}
}