java dom4j新增,删除,修改,生成,导出XML

来源:互联网 发布:java实现密钥进行加密 编辑:程序博客网 时间:2024/05/22 03:46
公司升级资源包,不想每次更新都下载整个资源包,所以就想生成XML,在XML里记录哪些文件有变动,更新时直接下载变动的文件即可,XML格式如下
 <?xml version="1.0" encoding="UTF-8" ?> - <Package>- <version flag="1-4">- <Add>- <add>  <uri>adduri4</uri>   <path>addpath4</path>   </add>- <add>  <uri>adduri5</uri>   <path>addpath5</path>   </add>- <add>  <uri>adduri6</uri>   <path>addpath6</path>   </add>  </Add>- <Update>- <update>  <uri>adduri3</uri>   <path>addpath3</path>   </update>  </Update>  <Delete />   </version>- <version flag="2-4">- <Add>- <add>  <uri>adduri4</uri>   <path>addpath4</path>   </add>- <add>  <uri>adduri4</uri>   <path>addpath4</path>   </add>- <add>  <uri>adduri5</uri>   <path>addpath5</path>   </add>- <add>  <uri>adduri6</uri>   <path>addpath6</path>   </add>  </Add>  <Update />   <Delete />   </version>- <version flag="3-4">- <Add>- <add>  <uri>adduri5</uri>   <path>addpath5</path>   </add>- <add>  <uri>adduri5</uri>   <path>addpath5</path>   </add>- <add>  <uri>adduri6</uri>   <path>addpath6</path>   </add>  </Add>  <Update />   <Delete />   </version>  </Package>

每次新增版本,XML更新成各个历史版本到最新版本的变化,uri与path在界面填写,其余自动生成

util代码如下

public class PackageUpgradeUtil{   @SuppressWarnings({ "rawtypes" })public static Document updateXML(Document doc,String addItem,String deleteItem,String updateItem,String highestVersion){ List versionList=(List) doc.getRootElement().elements("version"); for(int i=0;i<versionList.size();i++){ Element versionEl=(Element) versionList.get(i); versionEl.attribute("flag").setValue(versionEl.attribute("flag").getValue().substring(0, versionEl.attribute("flag").getValue().indexOf("-")+1)+highestVersion); versionEl=checkAddEl(versionEl, addItem, updateItem, deleteItem);  } return doc;}@SuppressWarnings("rawtypes")public static Element checkAddEl(Element versionEl,String addItem,String updateItem,String deleteItem){List addEl=versionEl.elements("Add");String[] deletes=deleteItem.split(";");String[] updates=updateItem.split(";");if(addEl!=null){List addElChildrenEl=((Element)addEl.get(0)).elements("add");for(int i=0;i<addElChildrenEl.size();i++){if(!Tools.isEmptyOrNull(deleteItem)){for(int j=0;j<deletes.length;j++){if(((((Element) ((Element)(addElChildrenEl.get(i))).elements("uri").get(0)).getText())).equals(deletes[j])){  ((Element)addElChildrenEl.get(i)).getParent().remove((Element)addElChildrenEl.get(i));}}}if(!Tools.isEmptyOrNull(updateItem)){for(int z=0;z<updates.length;z++){if(((((Element) ((Element)(addElChildrenEl.get(i))).elements("uri").get(0)).getText())).equals(updates[z].split(",")[0])){((Element)addElChildrenEl.get(i)).getParent().remove((Element)addElChildrenEl.get(i));}}}}        Element el=(Element)(versionEl.elements("Add").get(0));String[] adds=addItem.split(";");if(!Tools.isEmptyOrNull(addItem)){for(int i=0;i<adds.length;i++){String[] add=adds[i].split(",");Element newAddElChildrenEl=el.addElement("add");Element uriEl=newAddElChildrenEl.addElement("uri");Element pathEl=newAddElChildrenEl.addElement("path");uriEl.setText(add[0]);pathEl.setText(add[1]);}}}return updateUpdateEl(versionEl, addItem, updateItem, deleteItem);}@SuppressWarnings("rawtypes")public static Element updateUpdateEl(Element versionEl,String addItem,String updateItem,String deleteItem){List updateEl=versionEl.elements("Update");String[] deletes=deleteItem.split(";");List updateElChildrenEl=((Element)updateEl.get(0)).elements("update");if(!Tools.isEmptyOrNull(deleteItem)){for(int i=0;i<updateElChildrenEl.size();i++){for(int j=0;j<deletes.length;j++){if(((((Element) ((Element)(updateElChildrenEl.get(i))).elements("uri").get(0)).getText())).equals(deletes[j])){  ((Element)updateElChildrenEl.get(i)).getParent().remove((Element)updateElChildrenEl.get(i));}}}}    Element el=(Element)(versionEl.elements("Update").get(0));//List updateElChildrenEl=el.elements("update");if(!Tools.isEmptyOrNull(updateItem)){    String[] updates=updateItem.split(";");for(int i=0;i<updates.length;i++){boolean flag=false;                    for(int j=0;j<updateElChildrenEl.size();j++){                    if(((((Element) ((Element)(updateElChildrenEl.get(j))).elements("uri").get(0)).getText())).equals(updates[i].split(",")[0])){                    flag=true;                    }                    }                    if(!flag){String[] update=updates[i].split(",");Element newUpdateElChildrenEl=el.addElement("update");Element uriEl=newUpdateElChildrenEl.addElement("uri");Element pathEl=newUpdateElChildrenEl.addElement("path");uriEl.setText(update[0]);pathEl.setText(update[1]);                    }}}return updateDeleteEl(versionEl, addItem, deleteItem); }@SuppressWarnings("rawtypes")public static Element updateDeleteEl(Element versionEl,String addItem,String deleteItem){List deleteEl=versionEl.elements("Delete");String[] adds=addItem.split(";");if(deleteEl!=null){List deleteElChildrenEl=((Element)deleteEl.get(0)).elements("delete");if(!Tools.isEmptyOrNull(addItem)){for(int i=0;i<deleteElChildrenEl.size();i++){for(int j=0;j<adds.length;j++){if(((((Element) ((Element)(deleteElChildrenEl.get(i))).elements("uri").get(0)).getText())).equals(adds[j].split(",")[0])){ ((Element)deleteElChildrenEl.get(i)).getParent().remove((Element)deleteElChildrenEl.get(i)); Element el=(Element)(versionEl.elements("Update").get(0)); Element newUpdateElChildrenEl=el.addElement("update"); Element uriEl=newUpdateElChildrenEl.addElement("uri"); Element pathEl=newUpdateElChildrenEl.addElement("path"); uriEl.setText(adds[j].split(",")[0]); pathEl.setText(adds[j].split(",")[1]);   }}}}if(!Tools.isEmptyOrNull(deleteItem)){           Element el=(Element)(versionEl.elements("Delete").get(0));String[] deletes=deleteItem.split(";");for(int i=0;i<deletes.length;i++){Element newDeleteElChildrenEl=el.addElement("delete");Element uriEl=newDeleteElChildrenEl.addElement("uri");uriEl.setText(deletes[i]);}} }return versionEl;  }public static Document addVersion(Document doc,String addItem,String updateItem,String deleteItem,String highestVersion,String preHighestVersion) throws IOException{Element root=doc.getRootElement();    ElementversionEL=root.addElement("version");    versionEL.addAttribute("flag",preHighestVersion+"-"+highestVersion);      Element addEl=versionEL.addElement("Add");    Element updateEl=versionEL.addElement("Update");    Element deleteEl=versionEL.addElement("Delete");if(!Tools.isEmptyOrNull(addItem)){String[] adds=addItem.replace("\n", "").split(";");for(int i=0;i<adds.length;i++){String[] add=adds[i].split(",");Element addElChildrenEl=addEl.addElement("add");Element uriEl=addElChildrenEl.addElement("uri");Element pathEl=addElChildrenEl.addElement("path");uriEl.setText(add[0]);pathEl.setText(add[1]);}}if(!Tools.isEmptyOrNull(deleteItem)){String[] deletes=deleteItem.replace("\n", "").split(";");for(int i=0;i<deletes.length;i++){String delete=deletes[i];Element deleteElChildrenEl=deleteEl.addElement("delete");Element uriEl=deleteElChildrenEl.addElement("uri");uriEl.setText(delete);}}if(!Tools.isEmptyOrNull(updateItem)){String[] updates=updateItem.replace("\n", "").split(";");for(int i=0;i<updates.length;i++){String[] update=updates[i].split(",");Element updateElChildrenEl=updateEl.addElement("update");Element uriEl=updateElChildrenEl.addElement("uri");Element pathEl=updateElChildrenEl.addElement("path");uriEl.setText(update[0]);pathEl.setText(update[1]);}}      return doc;    }public static void writeFile(Document doc,String ossPath,String fileName,String localPath){try{    OutputFormat format = OutputFormat.createPrettyPrint();          // 设置编码          format.setEncoding("UTF-8");          // 创建XMLWriter对象,指定了写出文件及编码格式          XMLWriter writer;writer = new XMLWriter(new OutputStreamWriter(new FileOutputStream(new File(localPath)), "UTF-8"), format);        // 写入      writer.write(doc);        // 立即写入          writer.flush();          // 关闭操作          writer.close();                File file=new File(localPath);        OSSFileUtil.uploadFile(file, ossPath, fileName);}catch (Exception e) {// TODO: handle exceptione.printStackTrace();}}}

1 0
原创粉丝点击