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 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 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文件:


<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 fieldalias;
    private String layernum;
    private String layerimg;
    private List tongjiFields;
    private List filedstypes;
    private List oldField;
    private List resultshows;
    private List selectFields;
    private String isvisible;
    private String layername;
    public List getFieldalias() {
        return fieldalias;
    }
    public void setFieldalias(List 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 getTongjiFields() {
        return tongjiFields;
    }
    public void setTongjiFields(List tongjiFields) {
        this.tongjiFields = tongjiFields;
    }
    public List getFiledstypes() {
        return filedstypes;
    }
    public void setFiledstypes(List filedstypes) {
        this.filedstypes = filedstypes;
    }
    public List getOldField() {
        return oldField;
    }
    public void setOldField(List oldField) {
        this.oldField = oldField;
    }
    public List getResultshows() {
        return resultshows;
    }
    public void setResultshows(List resultshows) {
        this.resultshows = resultshows;
    }
    public List getSelectFields() {
        return selectFields;
    }
    public void setSelectFields(List 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;
    }

}

你可能感兴趣的:(java)