`
fhqibjg
  • 浏览: 54958 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

xml与javabean的相互转换

    博客分类:
  • java
阅读更多

引用开源包:dom4j

jar包            :见附件

 

功能   :主要用于开发中常见的xml与javabean之间的数据互转,减少重复代码的编写,支持xml对应字段中的集合数据类型(只能为list)。但不支持 bean转换成xml时不指定字段所对应xml元素结点名称的情况,所有的字段必需指定生成xml时所对应的结点名称(即使想字段名就是xml结点属性名)。

 

 

example:

 

 要转换成bean对象的xml文件

 

 

<?xml version='1.0' encoding='UTF-8'?>
<result resultCode="0" ses="5">
	<dd>1212</dd>
	<getDiskResult>
		<nodeCount>43</nodeCount>
		<contentList length="35">
			<contentInfo>
				<contentID>xb11RJTmc01109020111028015344009</contentID>
				<contentName>1-1稻城风光.docx</contentName>
				<contentList length="35">
					<contentInfo>
						<contentID>
							xb11RJTmc01109020111028015344009
						</contentID>
						<contentName>1-2-11稻城风光.docx</contentName>
					</contentInfo>
					<contentInfo>
						<contentID>
							xb11RJTmc01109020111028015344010
						</contentID>
						<contentName>1-2-12稻城风光.docx</contentName>
					</contentInfo>
				</contentList>
			</contentInfo>
			<contentInfo>
				<contentID>xb11RJTmc01109020111028015344009</contentID>
				<contentName>2-1稻城风光.docx</contentName>
				<contentList length="35">
					<contentInfo>
						<contentID>
							xb11RJTmc01109020111028015344009
						</contentID>
						<contentName>2-2-11稻城风光.docx</contentName>
					</contentInfo>
					<contentInfo>
						<contentID>
							xb11RJTmc01109020111028015344010
						</contentID>
						<contentName>2-2-12稻城风光.docx</contentName>
					</contentInfo>
				</contentList>
			</contentInfo>
		</contentList>
	</getDiskResult>
</result>

 

java实体bean对象(一定要提供get set方法)

   Content.java

 

 

public class Content {

	@AttributeAnnotation(attribute = "resultCode")
	@ElementAnnotation(xmlElement = "result")
	private String resultCode;

	@ElementAnnotation(xmlElement = "nodeCount")
	private String nodeCount;

	@ElementAnnotation(xmlElement = "contentList")
	@CollectionAnnotation(beanClass = ContentInfo.class, childElement = "contentInfo")
	private List<ContentInfo> contentList;

	@AttributeAnnotation(attribute = "length")
	@ElementAnnotation(xmlElement = "contentList")
	private String length;

	@ElementAnnotation(xmlElement = "dd")
	private String dd;

	@AttributeAnnotation(attribute = "ses")
	@ElementAnnotation(xmlElement = "result")
	private String other;

	public String getResultCode() {
		return resultCode;
	}

	public void setResultCode(String resultCode) {
		this.resultCode = resultCode;
	}

	public String getNodeCount() {
		return nodeCount;
	}

	public void setNodeCount(String nodeCount) {
		this.nodeCount = nodeCount;
	}

	public List<ContentInfo> getContentList() {
		return contentList;
	}

	public void setContentList(List<ContentInfo> contentList) {
		this.contentList = contentList;
	}

	public String getLength() {
		return length;
	}

	public void setLength(String length) {
		this.length = length;
	}

	public String getDd() {
		return dd;
	}

	public void setDd(String dd) {
		this.dd = dd;
	}

	public String getOther() {
		return other;
	}

	public void setOther(String other) {
		this.other = other;
	}

        
	@Override
	public String toString() {
		return "dd:" + this.dd + " other:" + this.other + " nodeCount:"
				+ this.nodeCount + " resultCode:" + this.resultCode
				+ " length:" + this.length + " contentList:" + this.contentList;
	}
 }
 

  ContentInfo.java

 

public class ContentInfo {

	@ElementAnnotation(xmlElement = "contentID")
	private String id;

	@ElementAnnotation(xmlElement = "contentName")
	private String name;

	@ElementAnnotation(xmlElement = "contentList")
	@CollectionAnnotation(beanClass = ContentInfoChild.class, childElement = "contentInfo")
	private List<ContentInfo> contentList;

	@AttributeAnnotation(attribute = "length")
	@ElementAnnotation(xmlElement = "contentList")
	private String length;

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public List<ContentInfo> getContentList() {
		return contentList;
	}

	public void setContentList(List<ContentInfo> contentList) {
		this.contentList = contentList;
	}

	public String getLength() {
		return length;
	}

	public void setLength(String length) {
		this.length = length;
	}

	@Override
	public String toString() {
		// TODO Auto-generated method stub
		return "id:" + this.id + " name:" + this.name + " length:"
				+ this.length + " contentList:" + this.contentList;
	}
 }
 

ContentInfoChild.java

 

public class ContentInfoChild {

	@ElementAnnotation(xmlElement = "contentID")
	private String id;

	@ElementAnnotation(xmlElement = "contentName")
	private String name;

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}


	@Override
	public String toString() {
		// TODO Auto-generated method stub
		return "id:" + this.id + " name:" + this.name;
	}

}

 

测试MyTest.java类

 

public class MyTest {
	
public static void main(String[] args){
		InputStream in = MyAnalyMain.class.getClassLoader().getResourceAsStream("ce.xml");
		Content content = null;
		Long begin = System.currentTimeMillis();
		XmlToBeanAnaly analy = new XmlToBeanAnaly(); //xml转换成实现bean的
		analy.setClass(Content.class);               //设置要转换成xml的bean的class信息
		analy.initBeanFields();                      //初使化字段数据  
		
		//bean转换成xml文件
		BeanToXmlAnaly toXml = new BeanToXmlAnaly(); 
		toXml.setEncodeing("utf-8", "root");
		try {
		  toXml.setSchema("your scheama path", "public url");
		  //Content content = analy.xmlToBean(in,Content.class); //当没有调用 setClass()与initBeanFields()方法时可调用此方法
		  content = analy.xmlToBean(in);                         //将xml转换成bean
		  System.out.println(content);
		  Long end = System.currentTimeMillis();
		  System.out.println("执行耗时:"+(end - begin));
		  
		  //bean转换成xml文件
		  String xml = toXml.beanToXmlString(content);
		  System.out.println(xml);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}
 

输出:

 

  System.out.println(content);
  System.out.println("执行耗时:"+(end - begin));

dd:1212 other:5 nodeCount:43 resultCode:0 length:35 contentList:[id:xb11RJTmc01109020111028015344009 name:1-1稻城风光.docx length:35 contentList:[id:xb11RJTmc01109020111028015344009 name:1-2-11稻城风光.docx, id:xb11RJTmc01109020111028015344010 name:1-2-12稻城风光.docx], id:xb11RJTmc01109020111028015344009 name:2-1稻城风光.docx length:35 contentList:[id:xb11RJTmc01109020111028015344009 name:2-2-11稻城风光.docx, id:xb11RJTmc01109020111028015344010 name:2-2-12稻城风光.docx]]
执行耗时:101

 

System.out.println(xml);
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE root PUBLIC "public url " "your scheama path">
<root>
	<dd>1212</dd>
	<contentList length="35">
		<contentInfo>
			<contentList length="35">
				<contentInfo>
					<contentName>1-2-11稻城风光.docx</contentName>
					<contentID>
						xb11RJTmc01109020111028015344009
					</contentID>
				</contentInfo>
				<contentInfo>
					<contentName>1-2-12稻城风光.docx</contentName>
					<contentID>
						xb11RJTmc01109020111028015344010
					</contentID>
				</contentInfo>
			</contentList>
			<contentName>1-1稻城风光.docx</contentName>
			<contentID>xb11RJTmc01109020111028015344009</contentID>
		</contentInfo>
		<contentInfo>
			<contentList length="35">
				<contentInfo>
					<contentName>2-2-11稻城风光.docx</contentName>
					<contentID>
						xb11RJTmc01109020111028015344009
					</contentID>
				</contentInfo>
				<contentInfo>
					<contentName>2-2-12稻城风光.docx</contentName>
					<contentID>
						xb11RJTmc01109020111028015344010
					</contentID>
				</contentInfo>
			</contentList>
			<contentName>2-1稻城风光.docx</contentName>
			<contentID>xb11RJTmc01109020111028015344009</contentID>
		</contentInfo>
	</contentList>
	<nodeCount>43</nodeCount>
</root>
 

ps:附件己重新更新,用法和文章介绍差不多。只是注解里的属性名有所更改,同时修正了几处bug。同时添加了根据bean中的字段类型自动转换数据(现只支持String ,Boolean,Double,Float等常用类型),当字段与xml结点或属性名相同时默认不用指定名称。

 

源码为src

  • src.rar (16.1 KB)
  • 下载次数: 128
分享到:
评论

相关推荐

    xml与JavaBean互相转换的好工具---Xstream

    xml与JavaBean互相转换的好工具---Xstream,能够很方便的实现xml与JavaBean之间的转换,这在系统之间进行信息交互是非常方便的

    javabean和xml互相转换工具类以及jar包

    - **使用Apache Commons Betwixt**:与转换过程类似,Betwixt提供了从XML到JavaBean的反向映射功能。 在实际应用中,`Bean2xml.java`可能是一个工具类,它封装了上述转换逻辑。这个类可能包含静态方法,如`...

    xml与javabean的转换

    总结来说,Jox库提供了一个方便的工具`BeanXmlMapping`,用于XML与JavaBean之间的相互转换,这对于在Java应用中处理结构化数据非常有用。通过熟练掌握其用法,开发者可以更加高效地在对象模型和XML文档之间进行数据...

    JOX实现XML和JavaBean相互转化

    XML和JavaBean相互转化是一个非常有用的工作,用来读写xml的组件很多,比如dom4j, sax, JDom,Digester等,但是很多组件用起来很麻烦,今天给大家推荐一个超级简单的组件JOX, JOX是一套用户XML document和Java ...

    xml与javabean之间的相互转换,很方便,导入即可使用

    使用XStream进行XML与JavaBean的转换非常简单。首先,你需要在项目中引入XStream库,如果是MyEclipse,可以通过右键点击项目 -&gt; Build Path -&gt; Configure Build Path -&gt; Libraries -&gt; Add External JARs,选择...

    用JOX实现xml和javabean的相互转换

    这个库简化了XML解析和Java对象之间的转换过程,使得开发人员能够更便捷地处理XML数据,特别是在需要在不同系统间传输Java对象或者在Web服务中使用XML作为数据交换格式时。 在本文中,我们首先看到一个Java Bean的...

    xml、xsd、javabean的互相转换

    作为备忘录,实现xml转换成xsd,然后由xsd转换到javabean,最后在xml和javabean之间互相转换。 说明网址:http://blog.csdn.net/beanjoy/article/details/38272051

    xml和java bean互相转换工具包(简单易用)

    xml 与 bean 互相转换 工具类 1、bean类的属性需要遵守BEAN规范,否则 无法 读存BEAN值。 2、bean类的属性如果 是集合 只支持数组以及List、Map、Set。 3、bean类属性(boolean除外)前面两个字母要么全部小写,要么...

    xml与json、javabean的互相转换

    在Java开发中,有时我们需要将XML转换为JSON,反之亦然,或者将这些格式与JavaBean对象进行互换,以便于数据处理和传输。本篇文章将深入探讨XML、JSON与JavaBean之间的转换方法。 首先,我们来看XML和JSON的特性。...

    xstream 让javabean和xml互相转换

    这篇博客“xstream 让javabean和xml互相转换”深入探讨了如何利用XStream库实现这一功能。 XStream的核心思想是通过反射机制,将Java对象的字段映射到XML的元素和属性,以及反向操作将XML解析回Java对象。它的优势...

    xml和bean 互相转换

    在Java开发中,XML(可扩展标记语言)和Bean之间的互相转换是一项常见的任务,尤其是在处理配置文件、数据交换或者序列化场景中。本篇将详细阐述XML与Bean之间的转换过程,以及相关的Java技术。 首先,XML是一种...

    使用JAXB完成JAVAbean与xml互转

    Java Architecture for XML Binding (JAXB) 是Java平台上的一个标准技术,它允许在Java对象(如JavaBeans)和XML文档之间进行互相转换。这个过程被称为对象绑定,它简化了XML数据的处理,使得开发人员无需手动编写...

    android xUtils断点下载+xml与javaBean互转+打开本地音乐播放器

    这篇内容将主要介绍如何利用xUtils进行断点下载、XStream库实现XML与JavaBean之间的互相转换,以及如何启动本地音乐播放器。这些技术都是Android应用开发中常见的需求,对提升用户体验和应用功能具有积极的作用。 ...

    JavaBean-xml-Json转换

    XStream示例代码,JavaBean与XML,JSON之间互相转换(包含完整jar包)jettison-1.3.3.jar、xmlpull-1.1.3.1.jar、xstream-1.4.7.jar

    xml和bean之间的相互转换源码

    在Java开发中,XML(可扩展标记语言)和Bean之间的相互转换是常见的操作,尤其是在处理配置文件、数据持久化或Web服务时。这里的"bean"通常指的是JavaBeans,即符合特定设计模式的Java对象,它们封装了数据并提供了...

    jox.jar包 是操作xml文件与javaBean的相互转化

    jox是一组java类库 实现javaBean与xml相互转化 更加容易

    XStream在JavaBean与XML/JSON 之间相互转换

    **XStream:JavaBean与XML/JSON之间的转换大师** XStream是一个开源库,它为Java对象提供了简单且直观的XML序列化和反序列化的解决方案。它不仅能够将Java对象转换成XML,反之亦然,还能支持JSON格式的转换。这个...

Global site tag (gtag.js) - Google Analytics