java dom4j新增,删除,修改,生成,导出XML
2016-08-13 11:22
417 查看
公司升级资源包,不想每次更新都下载整个资源包,所以就想生成XML,在XML里记录哪些文件有变动,更新时直接下载变动的文件即可,XML格式如下
每次新增版本,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();
Element versionEL=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 exception
e.printStackTrace();
}
}
}
<?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();
Element versionEL=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 exception
e.printStackTrace();
}
}
}
相关文章推荐
- dom4j相关操作,生成指定的xml文档-修改id为2的学生姓名-删除id为2的学生
- Asp.Net+XML操作基类(修改,删除,新增,创建)第1/2页
- Asp.Net XML操作基类(修改,删除,新增,创建)
- dom4j读取、修改、删除xml
- Asp.Net XML操作基类(修改,删除,新增,创建)
- C#C# XMLXML 修改修改 新增新增 删除删除 插入插入
- Asp.Net XML操作基类(修改,删除,新增,创建)
- 简单的XML文件操作(xml文件生成,节点追加、遍历、修改、删除)
- Asp.Net XML操作基类(修改,删除,新增,创建)
- Asp.Net XML操作基类(修改,删除,新增,创建)
- C# 生成 添加 修改 删除 XML节点操作
- Asp.Net+XML操作基类(修改,删除,新增,创建)第1/2页
- Asp.Net XML操作基类(修改,删除,新增,创建)
- Asp.Net XML操作基类(修改,删除,新增,创建)
- java中四种操作(DOM、SAX、JDOM、DOM4J)xml方式的比较与详解(code稍作修改)
- Asp.Net XML操作基类(修改,删除,新增,创建)
- java中利用dom4j对XML文档的创建、解析、查找、修改、保存等操作。
- java写的用DOM来解析、修改、删除XML
- 利用反射与dom4j读取javabean生成对应XML和读取XML得到对应的javabean对象集合
- 我的XMLHelper----C# XML操作基类(修改,删除,新增,创建)