利用JAXB进行xml和javabean之间转换
来源:互联网 发布:sql身份证取年龄 编辑:程序博客网 时间:2024/05/16 14:53
Xml和javabean之间的互相转换是开发中常常遇到的问题,今天小试了一下JAXB,感觉真是太方便了,这里特此记录(JDK6中加入了JAXB,不需要额外导出包)
利用JAXB实现XML与Javabean之间的相互转换的大致思想:利用XML的生成相应的XSD或者DTD,然后利用该XSD或DTD生成对应的javabeanClass和ObjectFactory, 网上找个一个来描述了这个步骤:
一些名词:
JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术。
DTD (Documnet Type Definition) 即文档类型定义,是一套关于标记符的语法规则。它是XML1.0版规格得一部分,是XML文件的验证机制,属于XML文件组成的一部分。
XSD(XML Schema Definition,XSD) XML Schema 定义, 是基于 XML 的 DTD 替代者
开始转换
一. 利用XML生成相应XSD或者DTD
1. 生成XSD可以通过一个online工具完成.
网址: http://www.freeformatter.com/xsd-generator.html#ad-output
2. 生成DTD,通过一个java小工具:http://sourceforge.net/projects/xml2dtd/
二. 利用生成的XSD或者DTD生成java类:
1. 命令行的方式(jdk6的支持)
(a) XSD生成java: cmd--> cd xsd所在文件夹--> xjc –d . –p 包名 ./test.xsd
(b) DTD生成java: cmd --> cd DTD所在文件夹 --> xjc -dtd –d . –p 包名 ./test.dtd
2. Eclipse下面生成java类,此方法只针对xsd,选中你的xsd,右键:
然后选择包等操作,一步一步就可以生成了.
注意:XML里面最好不要包含value等敏感关键字,如果包含.先用别的名词替换,当生成javabean后再修改javabean.
三. 利用生成javabean来进行xml和java之间的转换
a> XML到javabean
- File file = new File("C:/ML_OA_DATA.xml");
- String xmlStr = FileUtils.readFileToString(file , "UTF-8");
- Reader reader = new StringReader(xmlStr);
- Unmarshaller unmarshaller = JAXBContext.newInstance(Result.class).createUnmarshaller();
- Result result = (Result) unmarshaller.unmarshal(reader);
- List<Result.DocInfo.Field> list = result.getDocInfo().getField();
- List<Attachment> eFileList = result.getAttachments().getAttachment();
- for (Attachment efile : eFileList) {
- System.out.println(efile.getFtpdir());
- }
- Marshaller mashaller = JAXBContext.newInstance(Result.class).createMarshaller();
- ObjectFactory factory = new ObjectFactory();
- Result toxmlResult = factory.createResult();
- //可选 开始
- Field theField = factory.createResultDocInfoField();
- theField.setColName("ssss");
- DocInfo dii = factory.createResultDocInfo();
- dii.getField().add(theField);
- toxmlResult.setDocInfo(dii);
- //可选 结束
- mashaller.marshal(toxmlResult, new File("c:/outPut.xml"));
核心: 注册对象 和序列化
Marshaller mashaller = JAXBContext.newInstance(Result.class).createMarshaller();
mashaller.marshal(toxmlResult, new File("c:/outPut.xml"));
- 利用JAXB进行xml和javabean之间转换
- 利用JAXB进行xml和javabean之间转换
- 转:利用JAXB进行xml和javabean之间转换
- Jaxb技术进行xml和javabean对象之间互相转化
- JAXB转换xml和JavaBean
- 利用JAXB进行Bean与XML之间的转换
- JAXB JavaBean与Xml之间转换
- jaxb-xml和javabean转换实战
- JAXB实现JavaBean和xml互相转换
- 用XStream在JavaBean和XML之间进行转换
- java对象和xml之间转换--Jaxb
- XML的操作——JAXB进行Java对象和XML之间的转换
- 使用JAXB处理JavaBean和XML的转换
- 用 Jaxb 对 XML 和 JavaBean相互转换
- 通过jaxb实现javabean和xml的转换
- 利用JAXB实现xml和bean之间的转换(一)
- 利用JAXB实现xml和bean之间的转换(一)
- JavaEE中利用JAXB来实现Java对象和XML文档进行相互转换
- IOS解析JSON
- logistics回归测试
- 挨踢职场求生法则-----我在IT职场打滚超过15年了,从小小的程序员做到常务副总
- html A标签的onclick事件和href的使用
- JSON资料整理
- 利用JAXB进行xml和javabean之间转换
- 补上一篇——Iserver 7c 发布服务
- oschina-app 源码分析-数据缓存(离线功能)
- Java 性能优化之 String 篇
- 用自己的Qt4程序成功取代友善自带的程序(取代的程序是start Qt4.7.0)(转载)
- 是呆在原来公司还是去中软国际?各位提提意见
- Android不使用USB数据线调试的方法
- hdu 1009 猫鼠交易!!c++
- Codeforces Round #232 (Div. 2) B. On Corruption and Numbers 题解