- 浏览: 199976 次
- 性别:
- 来自: 河北
最新评论
-
沉默表明一切1:
楼主想问一下,怎样才能在浏览器看到这个store的内容,var ...
operamasks-ui之omGrid简单使用 -
asd001oo:
非常感谢 解决了我的问题
EasyUI-combobox-监听onblur事件 -
han0917:
mamacmm 写道你看一下xblink源码吧,它提供的方法好 ...
使用XBlink操作XML -
mamacmm:
你看一下xblink源码吧,它提供的方法好像没有这样的功能
使用XBlink操作XML -
han0917:
我想问下我使用XBlink序列化对象为xml的时候,对某字段A ...
使用XBlink操作XML
使用XBlink操作XML
- 博客分类:
- J2EE
1.为什么使用XBlink?
两个项目进行交互,交互方式使用XML。
使用XBlink可以简化此工作。
XBlink项目地址:http://code.google.com/p/xblink/
2.使用方法
首先把XBlink的jar包加入项目的CLASSPATH
在项目中写好两个通用的工具类,内容如下:
import java.io.File; import java.io.FileOutputStream; import java.io.OutputStreamWriter; import java.util.List; import org.nutz.log.Log; import org.nutz.log.Logs; import org.xblink.XBlink; import test.AppUser; /** * 数据库数据转XML * * */ @SuppressWarnings("unchecked") public class DataToXML { public static Log log = Logs.get(); /** * 转换用户数据到XML * * @throws Exception */ public static void buildAppUserUseXBlink(String fileNamePath,List<AppUser> userList) throws Exception{ if(null != userList){ log.info("用户表(app_user)数据转换..."); outPutXMLUseXBlink(userList, new Class[]{AppUser.class}, fileNamePath, "appUser.xml"); } } /** * 使用XBlink生成XML * * @param o 准备序列化得对象 * @param classes 对象以及相关对象的class类型 * @param path 路径 * @param fileName 文件名称(只是文件名称) * @throws Exception */ public static void outPutXMLUseXBlink(Object o,Class[] classes,String path,String fileName) throws Exception{ File file = new File(path); boolean exists = file.exists(); if (exists == false) { file.mkdirs(); } String outPath = path + "/" + fileName; File f = new File(outPath); FileOutputStream fos = new FileOutputStream(f); OutputStreamWriter osw = new OutputStreamWriter(fos,"UTF-8"); XBlink.registerClassesToBeUsed(classes); XBlink.toXml(o, osw); osw.close(); } }
import java.io.File; import java.io.FileInputStream; import java.io.InputStreamReader; import org.nutz.log.Log; import org.nutz.log.Logs; import org.xblink.XBlink; import util.PropertiesManager; /** * 将XML转换成对象 * * */ @SuppressWarnings("unchecked") public class XMLToData { public static Log log = Logs.get(); /** * 从XML转换成对象 * * @param classes 类 * @param fileName XML文件名 * @return Object * @throws Exception */ public static Object getObjectFromXMLUseXBlink(Class[] classes,String fileName) throws Exception{ Object tempObj = getObjectFromXMLUseXBlink(classes, PropertiesManager.SAVE_PATH, fileName); return tempObj; } /** * 从XML转换成对象 * * @param classes 类 * @param path 路径 * @param fileName XML文件名 * @return Object * @throws Exception */ public static Object getObjectFromXMLUseXBlink(Class[] classes,String path,String fileName) throws Exception{ path = path + "/" +fileName; File f = new File(path); if(f.exists()){//文件存在 FileInputStream fis = new FileInputStream(f); InputStreamReader isr = new InputStreamReader(fis,"UTF-8"); XBlink.registerClassesToBeUsed(classes); Object tempObj = XBlink.fromXml(isr); isr.close(); return tempObj; }else{ return null; } } }
接下来就是配置model了,配置的关键如下(具体查看XBlink官网):
import lombok.Data; import org.nutz.dao.entity.annotation.Id; import org.nutz.dao.entity.annotation.Table; import org.xblink.annotation.XBlinkConverter; import org.xblink.annotation.XBlinkOmitField; import org.xblink.core.convert.converters.singleValue.BooleanConverter; import org.xblink.core.convert.converters.singleValue.DateConverter; import org.xblink.core.convert.converters.singleValue.IntegerConverter; import org.xblink.core.convert.converters.singleValue.LongConverter; @Table("app_user") @Data public class AppUser { @XBlinkOmitField @Id private Long id; private String username; private String password; private String confirmPassword; private String passwordHint; private String firstName; private String lastName; private String email; private String phoneNumber; private String website; private String address; @XBlinkConverter(value=IntegerConverter.class) private Integer version; @XBlinkConverter(value=BooleanConverter.class) private boolean enabled; @XBlinkConverter(value=BooleanConverter.class) private boolean accountExpired; @XBlinkConverter(value=BooleanConverter.class) private boolean accountLocked; @XBlinkConverter(value=BooleanConverter.class) private boolean credentialsExpired; @XBlinkConverter(value=LongConverter.class) private Long userLevel; private String birthday; private String sex; private String duty; private String language; private String mobilePhone; private String company; @XBlinkConverter(value=DateConverter.class) private Date expireTime; @XBlinkConverter(value=BooleanConverter.class) private boolean isAdmin; private String memo; private String uuId; private String fullName ; }
其中,@XBlinkOmitField 是不在生成的XML中显示,@XBlinkConverter 是格式转换,很好理解的。
接着就是如何调用了,具体如下:
/** * 收集用户信息 * * @param folder 生成的用户XML地址 * @throws Exception */ public static void make(String folder) throws Exception{ List<AppUser> ul = BaseDao.getDao().query(AppUser.class,Cnd.where("id", "<=", "15"),null); DataToXML.buildAppUserUseXBlink(folder, ul); }
写到这,剩下的事情也就知道该知道怎么做了吧。
运行下项目,控制台大概输出如下:
生成的XML结果如下:
3.说明下
1)这个例子里面还使用了Nutz框架
2)在model里面使用了 lombok ,省掉了写get和set方法
3)写的不好,凑合看吧
评论
3 楼
han0917
2014-10-23
mamacmm 写道
你看一下xblink源码吧,它提供的方法好像没有这样的功能
恩 看了确实没有 需要改源码 谢谢!
2 楼
mamacmm
2013-12-10
你看一下xblink源码吧,它提供的方法好像没有这样的功能
1 楼
han0917
2013-12-09
我想问下我使用XBlink序列化对象为xml的时候,对某字段A设置了“”,空串。序列化后xml格式为<A/> ,有没有办法变成<A></A>这样呢?
发表评论
-
activiti注释Annotation生成图片后乱码问题解决
2016-04-18 18:49 1301activiti的版本:5.15.1 直接看图: ... -
EasyUI-combobox-监听onblur事件
2014-04-17 17:41 4040$("#id").combobox(). ... -
EasyUI-datagrid-自动合并单元格
2014-03-28 09:43 128431.目标 1.1表格初始化完成后,已经自动合并好需要 ... -
FATAL ERROR in native method: JDWP No transports initialized
2012-12-07 14:27 14263今天在启动MyEclipse里面配置的Tomcat的时候(DE ... -
operamasks-ui之omGrid简单使用
2012-06-19 22:40 190741.背景 1)本文只是简单记录下怎么使用operamasks ... -
使用SpringMVC(spring3.0)自带的json
2012-03-13 17:22 80541.下载spring相关jar 去哪里下载就不说了 要想支 ... -
Axis2简单入门
2011-07-22 23:23 44631.到Apache官网下载Axis2 给你地址:htt ... -
使用Nutz的文件池和上传功能实现上传图片
2011-05-03 13:27 4121【阅读本文前提】 您了解Nutz框架(刚刚接触N ... -
使用Nutz的json视图实现前台密码验证
2011-04-20 12:32 1561使用Nutz的json视图实现前台密码验证 【阅 ... -
能说明你的Javascript技术很烂的五个原因(转)
2011-04-13 12:40 1220Javascript在互联网上名声很臭,但你又很难再找到一个像 ... -
如何在android模拟器中安装和卸载APK包
2011-03-14 16:27 2410【安装APK】 安装前最好先把模拟器打开。下面举例说明 ... -
Android学习笔记
2011-03-02 21:38 1451Android学习笔记 1.改变AVD地址 ... -
oracle-学习笔记-5
2010-12-17 10:43 1883接 oracle-学习笔记-4 --- ... -
oracle-学习笔记-4
2010-12-17 10:42 1867接 oracle-学习笔记-3 ------------- ... -
oracle-学习笔记-3
2010-12-17 10:40 1332接 oracle-学习笔记-2 -------------- ... -
oracle-学习笔记-2
2010-12-17 10:39 1219接 oracle-学习笔记-1 ------------- ... -
oracle-学习笔记-1
2010-12-17 10:37 1513本文如同题目,只是学习笔记 1.1查看控制文件 SQL> ... -
Weblogic8.1 SSL的配置
2010-07-08 14:53 1372Weblogic SSL的配置 1) 先进入域所在的地 ... -
机试笔试面试题
2009-12-12 11:35 2517机试笔试面试题(主要是Java,其次是ASP.net,C#,O ... -
ExtJs资料
2009-11-27 18:04 2380从网上找了一些和ExtJs有关的资料,有需要的就下载吧! ...
相关推荐
* XBlink最NB的反序列方法,生成你需要的对象。 * * * 根据docTypeName与其格式特点,进行反序列化生成对象。 * * @param cs * 字符信息 * @param docTypeName * 任意你想要的文档格式...
RuoYi-Vue 全新 Pro 版本,优化重构所有功能。基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 微信小程序,支持 RBAC 动态权限、数据权限、SaaS 多租户、Flowable 工作流、三方登录、支付、短信、商城、CRM、ERP、AI 等功能
# 基于Spring Boot和MyBatis的订餐管理系统 ## 项目简介 本项目是一个基于Spring Boot和MyBatis框架的订餐管理系统,旨在提供一个高效、易用的在线订餐平台。系统分为客户端和后台管理系统两部分,客户端面向普通用户,提供用户登录、退出、菜品订购和查看订单等功能后台管理系统面向管理员,提供管理员登录、退出、菜品管理(添加、查询、修改、删除)、订单处理、用户管理(添加、查询、删除)等功能。 ## 项目的主要特性和功能 ### 客户端功能 用户登录与退出用户可以通过系统进行登录和退出操作。 菜品订购用户可以浏览菜单并选择菜品进行订购。 查看订单用户可以查看自己的订单历史。 ### 后台管理系统功能 管理员登录与退出管理员可以通过系统进行登录和退出操作。 菜品管理 添加菜品管理员可以添加新的菜品到菜单中。 查询菜品管理员可以查询现有的菜品信息。 修改菜品管理员可以修改菜品的详细信息。
Untitled Page.pdf
CocosCreator开发视频教程含源码简易塔防开发3.61G提取方式是百度网盘分享地址
# 基于Java的票务管理系统 ## 项目简介 本项目是一个基于Java的票务管理系统,旨在提供一个全面的票务管理解决方案,包括购票、退票、销售状态查询等功能。系统通过Java的Servlet技术处理HTTP请求,并与MySQL数据库进行交互,确保数据的准确性和一致性。 ## 项目的主要特性和功能 1. 购票功能用户可以通过系统购买票务,系统会记录购票信息并更新数据库。 2. 退票功能用户可以申请退票,系统会处理退票请求并更新票务状态。 3. 销售状态查询管理员可以查询特定用户或特定时间段的销售状态,包括月销售、类型销售等。 4. 用户登录验证系统提供用户登录验证功能,确保只有授权用户才能进行相关操作。 5. 数据库存储所有票务信息、用户信息和销售记录都存储在MySQL数据库中,确保数据的安全性和持久性。 ## 安装使用步骤 1. 环境准备 安装Java开发环境(JDK)。
本教程旨在帮助学习者从基础到进阶掌握数据库开发的核心技能。通过对数据库管理系统的安装、SQL 查询语言、数据库设计、查询优化、事务管理、数据库安全等方面的详细讲解,本教程为学习者提供了全面的数据库开发知识。通过实际操作和最佳实践的学习,你将能够设计高效、稳定的数据库系统,并有效地管理和优化数据存储与访问。
# 基于MCU和C语言的数字时钟系统 ## 项目简介 这是一个数字时钟系统的设计与实现项目,结合了电路设计与嵌入式编程技术。本项目包含了电路设计、PCB板设计和基于微控制器(MSP4302553)的C语言程序开发。数字时钟功能包括时间显示、闹钟提醒等。 ## 项目的主要特性和功能 1. 基于微控制器MSP4302553实现数字时钟功能。 2. 支持时间显示,包括小时、分钟和秒。 3. 支持闹钟提醒功能。 4. PCB板设计,方便硬件制作和集成。 ## 安装使用步骤 假设用户已经下载了本项目的源码文件和相关硬件设计文件。 1. 安装并熟悉MSP430微控制器的编程环境,如Energia IDE。 2. 根据提供的PCB设计文件制作硬件电路,确保电路连接正确无误。 3. 将编译好的C语言程序烧录到MSP430微控制器中。 4. 完成硬件电路的组装和调试。确保数字时钟正常工作,显示时间准确。
基于springboot推荐算法的在线课程推荐系统源码数据库文档.zip
华为手机助手14.0.0.320
基于springboot+web的医疗设备管理系统源码数据库文档.zip
基于springboot大学生校园线上招聘系统源码数据库文档.zip
基于springboot校外兼职教师考勤管理系统源码数据库文档.zip
基于springboot竞赛管理系统源码数据库文档.zip
基于springboot的考研资讯系统源码数据库文档.zip
《飞机大战》是一款经典的游戏,其代码文档资源通常包含游戏的核心逻辑、图形界面设计、音效处理等多个方面。以下是对飞机大战代码文档资源的详细描述: 飞机大战的代码通常分为多个模块,每个模块负责不同的功能。常见的模块包括: 主程序模块:负责游戏的初始化、事件循环、碰撞检测、精灵更新和画面渲染等核心功能。 精灵模块:包含游戏中所有可见对象的类定义,如飞机、敌机、子弹、奖励物品等。这些类通常继承自pygame的Sprite类,并实现自己的绘制和更新方法。 背景模块:负责游戏背景的绘制和滚动效果。通常使用两张相同的背景图片来实现无缝滚动。 音效模块:负责游戏中的音效播放,如飞机发射子弹的声音、敌机被击中的声音等。 二、核心逻辑 游戏初始化:在游戏开始时,主程序模块会初始化游戏窗口、时钟、精灵组等对象,并加载游戏所需的图片和音效资源。 事件循环:主程序模块会不断监听用户输入和系统事件,如键盘按键、鼠标移动等,并根据事件类型执行相应的操作。
FastReport v6.9.15 Enterprise FS for Delphi 11.0 概览 欢迎使用FastReport v6.9.15 Enterprise FS 版本,这是一款专为Delphi 7至11.0设计的高效、强大的报表生成工具。FastReport以其易用性、丰富的功能和高性能,在Delphi开发社区中享有盛誉。此版本特别适配于Delphi 11.0环境,为企业级应用提供了完整的报表解决方案。 特性亮点 全面兼容:无缝集成于Delphi 7到11.0的所有版本,确保在最新的开发平台上也能稳定工作。 企业级功能:包括数据处理、图表展示、多层嵌套报表等高级特性,满足复杂报表的设计需求。 高速渲染:优化的渲染引擎使得大数据量报表的生成快速流畅。 可视化设计:直观的设计器界面,让开发者能够轻松创建和编辑报表模板。 多种导出格式:支持将报表导出为PDF、Excel、HTML等多种格式,便于数据分享和分析。 源码级集成(FS版本特色):提供源代码,便于深度定制和二次开发。 安装与使用 请先解压缩FastReport v6.9.15 Enterprise FS Delph
FastReport企业版源代码6.6.17 支持10.4+ FastReport 简化管理工具2.0 资源描述 本仓库提供FastReport 6.6.17企业版源代码,适用于Delphi 7和Delphi 27(10.4 Sydney)。此外,还包含FastReport简化管理工具2.0版本,由xander.xiao@gmail.com开发,发布于2020年5月27日。 什么是包简化管理? FastReport包含一系列设计包文件,手动安装这些包文件非常繁琐。为了简化这一过程,我们提供了一个解决方案,该方案不仅适用于FastReport,还可以应用于任何包管理。 解决方案概述 将所有包文件复制到一个由环境变量%ProjectHome%命名的文件夹中,其结构如下: %ProjectHome%\Bin:存放所有包的BPL文件(运行时和设计时文件) %ProjectHome%\LibD7:存放Delphi 7编译的单元文件和资源文件(如dcu、dcp、dfm、res等) %ProjectHome%\LibD26:存放Delphi XE 10 Rio编译的单元文件和资源文件(如dcu
Cocos2d-x教程视频Windows环境下Visual Studio 2013中搭建Cocos2d-x 3.1集成开发环境提取方式是百度网盘分享地址