利用jdk6中Annotation将XML与对象之间互相转化(二)
来源:互联网 发布:python能做什么 编辑:程序博客网 时间:2024/06/10 02:13
直接附源码
目录结构:
1、operations.xml
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><operations><operation type="03" value="38" analyTag="0000" analyDes="统计"><action type="2" value="1" subject="3" /><action type="b" value="a" subject="c" /></operation></operations>
2、OperationConfig.java
package com.xml.obj.test;import java.util.List;import javax.xml.bind.annotation.XmlAccessType;import javax.xml.bind.annotation.XmlAccessorType;import javax.xml.bind.annotation.XmlElement;import javax.xml.bind.annotation.XmlRootElement;/** * Created by admin on 2015/8/12. */@XmlRootElement(name = "operations")@XmlAccessorType(XmlAccessType.FIELD)public class OperationConfig {@XmlElement(name = "operation")public List<Operation> list;public List<Operation> getList() {return list;}public void setList(List<Operation> list) {this.list = list;}}
3、Operation.java
package com.xml.obj.test;import java.util.List;import javax.xml.bind.annotation.XmlAccessType;import javax.xml.bind.annotation.XmlAccessorType;import javax.xml.bind.annotation.XmlAttribute;import javax.xml.bind.annotation.XmlElement;/** * Created by admin on 2015/8/12. */@XmlAccessorType(XmlAccessType.FIELD)public class Operation {@XmlElement(name = "action")List<Action> list;@XmlAttributepublic String type;@XmlAttributepublic String value;@XmlAttributepublic String analyTag;@XmlAttributepublic String analyDes;public List<Action> getList() {return list;}public void setList(List<Action> list) {this.list = list;}public String getAnalyTag() {return analyTag;}public void setAnalyTag(String analyTag) {this.analyTag = analyTag;}public String getAnalyDes() {return analyDes;}public void setAnalyDes(String analyDes) {this.analyDes = analyDes;}public String getType() {return type;}public void setType(String type) {this.type = type;}public String getValue() {return value;}public void setValue(String value) {this.value = value;}@Overridepublic String toString() {return "Operation [list=" + list + ", type=" + type + ", value=" + value + ", analyTag=" + analyTag + ", analyDes=" + analyDes + "]";}}
4、Action.java
package com.xml.obj.test;import javax.xml.bind.annotation.XmlAccessType;import javax.xml.bind.annotation.XmlAccessorType;import javax.xml.bind.annotation.XmlAttribute;/** * Created by admin on 2015/8/12. */@XmlAccessorType(XmlAccessType.FIELD)public class Action {@XmlAttributepublic String type;@XmlAttributepublic String value;@XmlAttributepublic String subject;public String getType() {return type;}public void setType(String type) {this.type = type;}public String getValue() {return value;}public void setValue(String value) {this.value = value;}public String getSubject() {return subject;}public void setSubject(String subject) {this.subject = subject;}@Overridepublic String toString() {return "Action [type=" + type + ", value=" + value + ", subject=" + subject + "]";}}
5、XmlParser.java
package com.xml.obj.test;import java.io.StringReader;import java.io.StringWriter;import java.util.ArrayList;import java.util.List;import javax.xml.bind.JAXBContext;import javax.xml.bind.Marshaller;import javax.xml.bind.Unmarshaller;/** * Created by admin on 2015/8/12. */public class XmlParser {public static XmlParser insetance;private XmlParser() {}public static XmlParser getInstance() {if (insetance == null) {return new XmlParser();} else {return insetance;}}/* 将对象转为xml */public String mshall(Object oc, Class<?> cc) throws Exception {JAXBContext cxt = JAXBContext.newInstance(cc);Marshaller mm = cxt.createMarshaller();StringWriter writer = new StringWriter();mm.marshal(oc, writer);return writer.toString();}/* 将xml转对象 */public Object unmashall(String xmlString, Class<?> cc) throws Exception {JAXBContext cxt = JAXBContext.newInstance(cc);Unmarshaller unm = cxt.createUnmarshaller();Object cnt = unm.unmarshal(new StringReader(xmlString));return cnt;}public static void main(String[] args) throws Exception {test_unmashall();// test_mshall();}private static void test_mshall() {List<Action> list = new ArrayList<Action>();Action action = new Action();action.setValue("1");action.setType("2");action.setSubject("3");Action action2 = new Action();action2.setValue("a");action2.setType("b");action2.setSubject("c");list.add(action);list.add(action2);List<Operation> ops = new ArrayList<Operation>();Operation operation = new Operation();operation.setList(list);operation.setValue("38");operation.setType("03");operation.setAnalyTag("0000");operation.setAnalyDes("坐席违规统计");ops.add(operation);OperationConfig ff = new OperationConfig();ff.setList(ops);try {String xmlString = XmlParser.getInstance().mshall(ff, OperationConfig.class);System.out.println(xmlString);} catch (Exception e) {}}private static void test_unmashall() {String x1 = "<operations><operation type='03' value='38' analyTag='0000' analyDes='统计'></operation ></operations>";String x2 = "<operations><operation type='02' value='31' analyTag='0002' analyDes='统计2'><action type='1' value='2' subject='3'></action></operation></operations>";try {OperationConfig ff = (OperationConfig) XmlParser.getInstance().unmashall(x2, OperationConfig.class);List<Operation> ops = ff.getList();for (Operation op : ops) {System.out.println(op.toString());}} catch (Exception e) {e.printStackTrace();}}}
</pre><pre name="code" class="java">
源码:http://pan.baidu.com/s/1dD2NWad
0 0
- 利用jdk6中Annotation将XML与对象之间互相转化(二)
- 利用jdk6中Annotation将XML与对象之间互相转化(一)
- JAXB 实现java对象与xml之间互相转换(二)
- 利用xstream进行java对象和xml之间的互相转化
- JDK6的新特性之二:使用JAXB2来实现对象与XML之间的映射
- JDK6的新特性之二:使用JAXB2来实现对象与XML之间的映射
- JDK6的新特性之二:使用JAXB2来实现对象与XML之间的映射
- JDK6的新特性之二:使用JAXB2来实现对象与XML之间的映射
- JDK6的新特性之二:使用JAXB2来实现对象与XML之间的映射
- Jaxb技术进行xml和javabean对象之间互相转化
- 将java对象与xml互相转换
- JAXB 实现java对象与xml之间互相转换(一)
- JAXB 实现java对象与xml之间互相转换
- JAXB 实现java对象与xml之间互相转换
- JAXB 实现java对象与xml之间互相转换
- JAXB 实现java对象与xml之间互相转换
- JAXB 实现java对象与xml之间互相转换
- JAXB 实现java对象与xml之间互相转换
- 实现Rserve和php的通信
- java代码--文件过滤器
- android获取设备唯一标识device_token
- cookie 和session 的区别详解
- 深入浅出 RPC-(2)
- 利用jdk6中Annotation将XML与对象之间互相转化(二)
- Drichlet's算数基数定律
- java 垃圾回收总结(2)
- Python Video tutorial
- Deep Learning(深度学习)学习笔记整理系列
- 使用AsyncTask时出现doInBackground没有调用的处理方法
- mysql高可用之MHA(补充3)--管理多组主从复制
- 零基础学习SDL开发之在Android使用SDL2.0加载字体
- 欢迎使用CSDN-markdown编辑器