项目笔记:创建XML文件和导出功能
一、创建XML文件:
要生成的XML结构:

//创建文件夹
private void createFilePah(String path){
File file = new File(path);
if(!file.exists()){
file.mkdirs();
}
} @Override
public void createXML() {
try{
Integer softLicBType = ;
Integer softLicWType = ;//类型,判断来创建正版还是非正版
//根据Type来获取非正版数据List
List<GenuineSerialNumberManagement> softLicB = genuineSerialNumberManagementDao.queryByType(softLicBType);
String pathB = ReadConfigFileUtil.getValue(SystemStatics.ROOTDIR) + SystemStatics.PATH_PAW + File.separator+"genuineSerialNumberManagement";
createFilePah(pathB);//判断文件夹路径是否存,不存在就创建文件夹
String XMLPathB =pathB +File.separator + "SoftLicB.xml";//组合非正版文件路径
List<GenuineSerialNumberManagement> softLicW = genuineSerialNumberManagementDao.queryByType(softLicWType);
String pathW = ReadConfigFileUtil.getValue(SystemStatics.ROOTDIR) + SystemStatics.PATH_PAW + File.separator+"genuineSerialNumberManagement";
createFilePah(pathW);
String XMLPathW = pathW+File.separator + "SoftLicW.xml"; Document documentB = DocumentHelper.createDocument();//创建文件
Element rootB = documentB.addElement("SoftLicB");//创建文件根目录
List<Integer> ss = new ArrayList<Integer>();//声明一个空List用于保存softId,当softId已经写过一次时,就不再写而是写它下级的东西
for (GenuineSerialNumberManagement type : softLicB){
if(!ss.contains(type.getSoftId())){//如果不存在就增加进去
ss.add(type.getSoftId());
Element softWare = rootB.addElement("Software");//二级目录,二级目录里面有SoftId和DisplayName
softWare.addAttribute("SoftId", type.getSoftId().toString());
softWare.addAttribute("DisplayName", type.getSoftDisplayName());
//根据type和softId来获取数据list,因为同一个softId下面的东西需要在三级目录上
List<GenuineSerialNumberManagement> softIdB = genuineSerialNumberManagementDao.queryBySoftIdAndType(type.getSoftId(),softLicBType);
for(GenuineSerialNumberManagement soft : softIdB){
Element license = softWare.addElement("license");//三级目录,三级目录里面有Version和value
license.addAttribute("Version", soft.getVersion());
license.addAttribute("value", soft.getSerialNumber());
}
}else{
continue;
}
}
XMLUtil.writeXml(documentB, XMLPathB);//在路径下写入文件 Document documentW = DocumentHelper.createDocument();
Element rootW = documentW.addElement("SoftLicW");
List<Integer> ww = new ArrayList<Integer>();
for(GenuineSerialNumberManagement type : softLicW){
if(!ww.contains(type.getSoftId())){
ww.add(type.getSoftId());
Element softWare = rootW.addElement("Software");
softWare.addAttribute("SoftId", type.getSoftId().toString());
softWare.addAttribute("DisplayName", type.getSoftDisplayName());
List<GenuineSerialNumberManagement> softIdW = genuineSerialNumberManagementDao.queryBySoftIdAndType(type.getSoftId(), softLicWType);
for(GenuineSerialNumberManagement soft : softIdW){
Element license = softWare.addElement("license");
license.addAttribute("Version", soft.getVersion());
license.addAttribute("value", soft.getSerialNumber());
}
}else{
continue;
}
}
XMLUtil.writeXml(documentW, XMLPathW);
}catch(Exception e){
e.printStackTrace();
} catch (Throwable e) {
e.printStackTrace();
}
}
我们看下与数据库交互的queryBySoftIdAndType
@SuppressWarnings("unchecked")
@Override
public List<GenuineSerialNumberManagement> queryBySoftIdAndType(Integer softId,Integer type) {
return this.getSession().createQuery(" FROM " + this.clazz.getName() + " this WHERE this.softId =(:softId) AND this.type =(:type)")
.setParameter("softId", softId)
.setParameter("type", type)
.list();
}
然后调用该方法即可生成XML
//自动生成xml
genuineSerialNumberManagementService.createXML();
二、导出功能:
<form id="export_serialNumber" action="" style="padding: 0; margin: 0;" method="post" target="_blank">
<input type="hidden" id="exportType" name="genuineSerialNumberManagement.type" value="" />
</form>
//导出规则库
function exportSerialNumber(){
var currentType = $("input[name='serialNumber']:checked").val();
if (currentType == "") {
showMsg("系统提示", "请选择要导出的类型!", false);
return;
}
if ($.checkSession()) {
var $form = $("#export_serialNumber");
var action = "";
try {
$("#exportType").val(currentType);
action = $form.attr("action");
$form.attr("action", "${basePath}/genuineSerialNumberManagementAction_export.do").submit();
} finally {
$form.attr("action", action);
}
}
}
注意form表单里需要加个input隐藏域用于传type值
//导出规则库
public String export() {
log.info("【正版序列号管理--导出规则库:开始】");
try {
if (genuineSerialNumberManagement != null) {
String filePath = ReadConfigFileUtil.getValue(SystemStatics.ROOTDIR) + SystemStatics.PATH_PAW + File.separator+"genuineSerialNumberManagement\\";
// 为下载 做 准备
String fileName = null;
if(genuineSerialNumberManagement.getType()!=null && genuineSerialNumberManagement.getType() == ){
fileName = "SoftLicB.xml";
}
if(genuineSerialNumberManagement.getType()!=null && genuineSerialNumberManagement.getType() == ){
fileName = "SoftLicW.xml";
}
ActionContext.getContext().put("fileName", fileName);
ActionContext.getContext().put("filePath", filePath + fileName);
}
log.info("【正版序列号管理--导出规则库:结束】");
return RETURN_DOWNLOADUI;
} catch (Exception e) {
log.error("【正版序列号管理--导出规则库:失败】", e);
return null;
}
}
项目笔记:创建XML文件和导出功能的更多相关文章
- C#操作XML学习之创建XML文件的同时新建根节点和子节点(多级子节点)
最近工作中遇到一个问题,要求创建一个XML文件,在创建的时候要初始化该XML文档,同时该文档打开后是XML形式,但是后缀名不是.在网上找了好些资料没找到,只能自己试着弄了一下,没想到成功了,把它记下来 ...
- TinyXML2读取和创建XML文件 分类: C/C++ 2015-03-14 13:29 94人阅读 评论(0) 收藏
TinyXML2是simple.small.efficient C++ XML文件解析库!方便易于使用,是对TinyXML的升级改写!源码见本人上传到CSDN的TinyXML2.rar资源:http: ...
- C#创建XML文件并保存
随着XML的普及以及在动态WEB应用程序中大量应用,如何通过.NET创建,删除,修改XML文件变的也来也重要了.一个简单的概念是,XML文件跟大的文本文件并没有什么区别,同时它是先于.NET出现,很多 ...
- Laravel Excel 实现 Excel-CSV 文件导入导出功能
Laravel Excel 是一款基于 PHPExcel 开发的Laravel框架专用的 Excel/CSV 文件导入导出功能的扩展包,用起来的非常方便. 它的 Github 地址是:https:// ...
- C#中如何创建xml文件 增、删、改、查 xml节点信息
XML:Extensible Markup Language(可扩展标记语言)的缩写,是用来定义其它语言的一种元语言,其前身是SGML(Standard Generalized Markup Lang ...
- IDEA创建xml文件
今天在用IDEA写项目的时候发现,创建xml文件只能通过File手动输入去创建,但在我看的一个学习视频上可以直接创建xml文件,好奇之下研究了一下,作此篇,希望能对需要的朋友有所帮助. 废话就不多说了 ...
- Java笔记_web.xml文件
在JavaEE工程中,web.xml文件是用来初始化配置信息:比如Welcome页面.servlet.servlet-mapping.filter.listener.启动加载级别等,但并不是必须的,一 ...
- .net中创建xml文件的两种方法
.net中创建xml文件的两种方法 方法1:根据xml结构一步一步构建xml文档,保存文件(动态方式) 方法2:直接加载xml结构,保存文件(固定方式) 方法1:动态创建xml文档 根据传递的值,构建 ...
- Java 创建xml文件和操作xml数据
java中的代码 import java.io.File; import java.io.StringWriter; import javax.xml.parsers.DocumentBuilder; ...
随机推荐
- 网站优化:引用CDN公共库
什么是CDN公共库? CDN公共库是指将常用的JS库存放在CDN节点,以方便广大开发者直接调用.与将JS库存放在服务器单机上相比,CDN公共库更加稳定.高速.一般的CDN公共库都会包含全球所有最流行的 ...
- 【转】VueJS中学习使用Vuex详解
转自:https://segmentfault.com/a/1190000015782272 在SPA单页面组件的开发中 Vue的vuex和React的Redux 都统称为同一状态管理,个人的理解 ...
- Linux下c++常用调试
进程调试 自己写的代码,直接gdb r/bt就可以了. 正在运行的进程,先ps ax找到进程id.然后gdb进入之后attach 进程id.stop/continue暂停和继续进程. core了,有c ...
- JS中关于换行的2个坑
//第一个为ul/ol使用中的li使用需要注意的地方 1.<ul id="banner_indicator"><li></li><li&g ...
- TCP/IP——链路层简记
在TCP/IP协议族中链路层的主要目的有三个: 1,为IP模块发送和接受IP数据报. 2,为ARP模块发送ARP请求和接受ARP应答. 3,为RARP模块发送RARP请求和接受RARP应答. 链路层包 ...
- Xamarin.Forms教程开发Xamarin.Forms应用程序需要的工具
开发Xamarin.Forms应用程序需要的工具 Xamarin.Forms教程开发Xamarin.Forms应用程序需要的工具,2014年5月8日在发布的Xamrin 3中引进了Xamarin.Fo ...
- 详解Ubuntu Server下启动/停止/重启MySQL数据库的三种方式(ubuntu 16.04)
启动mysql: 方式一:sudo /etc/init.d/mysql start 方式二:sudo service mysql start 停止mysql: 方式一:sudo /etc/init.d ...
- 看雪论坛 破解exe 看雪CTF2017第一题分析-『CrackMe』-看雪安全论坛
韩梦飞沙 韩亚飞 313134555@qq.com yue31313 han_meng_fei_sha 逆向 黑客 破解 学习 论坛 『CrackMe』 http://bbs.pediy.co ...
- [USACO06FEC]Milk Patterns --- 后缀数组
[USACO06FEC]Milk Patterns 题目描述: Farmer John has noticed that the quality of milk given by his cows v ...
- [BZOJ4553][TJOI2016&&HEOI2016]序列(CDQ分治)
4553: [Tjoi2016&Heoi2016]序列 Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 1202 Solved: 554[Su ...