dom4j解析xml并对节点及属性进行操作

进行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;
    }

}
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值