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
- java dom4j新增,删除,修改,生成,导出XML
- C# 生成xml文件,新增,修改,删除节点
- dom4j读取、修改、删除xml
- XML 修改 新增 删除 插入
- Dom4j增加,修改,删除XML文件
- Dom4j增加,修改,删除XML文件
- dom4j解析、修改、生成xml文件(转)
- dom4j 解析、修改、生成XML 文件
- dom4j解析、修改、生成xml文件
- XML新增、修改、删除、查询操作
- Java生成xml——DOM4J生成
- java中用Dom4J来操作xml文件(删除和修改和添加)
- java xml dom4j 创建 修改 解析
- 利用dom4j将 java bean生成xml
- java (功能篇) dom4j 生成xml文件
- java 生成 解析XML 文件 Dom4J
- Java——DOM4J方式生成XML
- java解析与生成xml(四): DOM4J
- 晋升条件
- java的四种引用类型
- Error: L6411E: No compatible library exists with a definition of startup symbol __main.
- Pku oj 1004 Financial Management(水题)
- 怎么完全卸载安装的weblogic?
- java dom4j新增,删除,修改,生成,导出XML
- 添加自定义jar包到本地Maven库
- PowerDesigner中constraint name uniqueness解决办法
- Unity3D 图形渲染个人见解
- 【1】【并查集】HDU1272 小希的迷宫
- SQL server 基本知识入门 个人心得
- idea导出可执行jar包
- js动态获取屏幕大小的方法
- Android之WebView学习