`
Cindy_Lee
  • 浏览: 112034 次
  • 性别: Icon_minigender_1
  • 来自: 武汉人在北京
社区版块
存档分类
最新评论

做了个xml小工具

阅读更多

因为需要在android手机上面解析xml,而现有的xml库大多都比较大,而且我需要的功能也比较少,所以就自己实现了一个。同时也熟悉了一下注解的运用,这个工具就只有两个功能:

1.将javabean转换成String类型的对象以便网络传输

2.将String类型对象转换成javabean以便操作方便

所有代码只有4个类,代码我就不贴了,发一下测试代码,想研究的可以下载来看看

 

package test;

import java.util.ArrayList;

import cn.infogiga.util.xml.XMLBean;
import cn.infogiga.util.xml.XMLElement;
import cn.infogiga.util.xml.XMLField;
import cn.infogiga.util.xml.XMLTypes;
/**
 * value表示这个节点名称 type=XMLTypes.XML_ROOT表示这是根节点
 * 如果不是根节点 输出的xml没有xml头:<?xml version='1.0' encoding='UTF-8'?>
 * @author cindy
 */
@XMLElement(value="BeanA",type=XMLTypes.XML_ROOT)
public class BeanA extends XMLBean{
	/**
	 * value表示节点名称,XMLTypes.XML_ELEMENT表示这是普通节点
	 */
	@XMLField(value="Field1",xmlType=XMLTypes.XML_ELEMENT)
	private String flied1;
	
	@XMLField(value="Field2",xmlType=XMLTypes.XML_ELEMENT)
	private String fleld2;
	
	@XMLField(value="Field3",xmlType=XMLTypes.XML_ELEMENT)
	private String field3;
	/**
	 * xmlType=XMLTypes.XML_LIST表示这是多个重复节点,这里一定要是ArrayList 如果是List则会报错
	 * 如果xmlType=XMLTypes.XML_LIST 那么mClass=BeanB.class 这个一定要添加,初始化是需要用到,没有什么意义
	 * 如果value="beanBs"省略则输出的xml将会有变化:
	 * 有value="beanBs"输出的字符串:
	 * <?xml version='1.0' encoding='UTF-8'?>
		<BeanA>
	                <Field1>111111</Field1>
	                <Field2>222222</Field2>
	                <beanBs>
		             <BeanB>
			           <Field1>b33333</Field1>
		             </BeanB>
		
		             <BeanB>
			           <Field1>b44444</Field1>
		             </BeanB>
	               </beanBs>
                 </BeanA>
	  *	没有value="beanBs"输出的字符串:
		<?xml version='1.0' encoding='UTF-8'?>
		<BeanA>
			<Field1>111111</Field1>
			<Field2>222222</Field2>
			<Field3>333333</Field3>
			<BeanB>
				<str2>b33333</str2>
			</BeanB>
			
			<BeanB>
				<str2>b44444</str2>
			</BeanB>
		</BeanA>
	 */
	@XMLField(value="beanBs",xmlType=XMLTypes.XML_LIST,mClass=BeanB.class)
	private ArrayList<BeanB> beanBs;
	
	public ArrayList<BeanB> getBeanBs() {
		return beanBs;
	}

	public void setBeanBs(ArrayList<BeanB> beanBs) {
		this.beanBs = beanBs;
	}

	public String getFlied1() {
		return flied1;
	}

	public void setFlied1(String flied1) {
		this.flied1 = flied1;
	}
	
	public String getFleld2() {
		return fleld2;
	}

	public void setFleld2(String fleld2) {
		this.fleld2 = fleld2;
	}

	public String getField3() {
		return field3;
	}

	public void setField3(String field3) {
		this.field3 = field3;
	}
}
 

 

 

 

package test;

import cn.infogiga.util.xml.XMLBean;
import cn.infogiga.util.xml.XMLElement;
import cn.infogiga.util.xml.XMLField;
import cn.infogiga.util.xml.XMLTypes;

@XMLElement(value="BeanB",type=XMLTypes.XML_UNROOT)
public class BeanB extends XMLBean{
	
	@XMLField(value="str2",xmlType=XMLTypes.XML_ELEMENT)
	private String str2;

	public String getStr2() {
		return str2;
	}

	public void setStr2(String str2) {
		this.str2 = str2;
	}
}

 

 

 

 

package test;

import java.util.ArrayList;
import java.util.List;

public class TestMain2 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		BeanA ba = new BeanA();
		
		ba.setFlied1("111111");
		ba.setFleld2("222222");
		ba.setField3("333333");
		ArrayList<BeanB> bList = new ArrayList<BeanB>();
		BeanB b = new BeanB();
		b.setStr2("b33333");
		bList.add(b);
		BeanB c = new BeanB();
		c.setStr2("b44444");
		bList.add(c);
		ba.setBeanBs(bList);
		System.out.println(ba.toString());
		

	}

}

 

 

 

package test;

import java.util.ArrayList;

public class TestMain3 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		/*// TODO Auto-generated method stub
		BeanA beanA = new BeanA();
		beanA.getBeanBs().getClass();*/
		String xml = "<?xml version='1.0' encoding='UTF-8'?><BeanA><Field1>111111</Field1><Field2>222222</Field2><Field3>333333</Field3><beanBs><BeanB><str2>b33333</str2></BeanB><BeanB><str2>b44444</str2></BeanB></beanBs></BeanA>";
		
		BeanA beanA = new BeanA();
		try {
			beanA.parse(xml);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		System.out.println(beanA.getFlied1());
		System.out.println(beanA.getFleld2());
		System.out.println(beanA.getField3());
		ArrayList<BeanB> l = beanA.getBeanBs();
		if(l != null){
			for(int i=0;i<l.size();i++){
				BeanB b = l.get(i);
				System.out.println(b.getStr2());
			}
		}
	}

}

 添加了点简单的注释

分享到:
评论
5 楼 Cindy_Lee 2010-05-29  
hzh86316 写道
把JavaBean序列化后不久可以直接传输了,干嘛要转

当然你这个思路也是可行的,但是有时你的程序需要和某个特定的另一个程序对接,而那个程序的接口格式已经设定好了,你只能按照那种格式来,我做这个原本是为了方便和浙江移动boss对接,而通信格式就是xml,协议是http协议。运用xml这类内容载体来传输信息最大的好处就是不需要考虑平台的差异性,如果用javaBean序列化传输的话是不是已经规定死双方平台都只能用java了呢?
4 楼 hzh86316 2010-05-29  
把JavaBean序列化后不久可以直接传输了,干嘛要转
3 楼 Cindy_Lee 2010-05-28  
yschen 写道
支持原创, 不过不知道LZ有没有用过simpleframework,本人一直用simpleframework,LZ有时间的话可以看一看。 

大致的看了下simpleframework,不过可惜似乎不再更新了,有时间研究一下源码
2 楼 yschen 2010-05-28  
支持原创, 不过不知道LZ有没有用过simpleframework,本人一直用simpleframework,LZ有时间的话可以看一看。 
1 楼 maozj 2010-05-27  
应该有良好的注释。。。

相关推荐

    java xml解析工具类 java xml解析工具类

    java xml解析工具类 java xml解析工具类java xml解析工具类 java xml解析工具类java xml解析工具类 java xml解析工具类java xml解析工具类 java xml解析工具类java xml解析工具类 java xml解析工具类java xml解析...

    andxml xml解密工具

    andxml汉化版是一个xml文件反编译工具,可与APKTOOL反编译配合使用,APK文件使用APKTool反编译生成XML文件后,就可以直接通过它进行汉化编辑 注意: 1、一键机器翻译会造成某些代码出现翻译错误现象,请人工识别。...

    一个小型的XML解析工具包

    这个小型的XML解析工具包是为开发者提供的一种轻量级解决方案,旨在帮助理解和处理XML文档。下面我们将深入探讨XML解析的基本概念、XML文档结构以及这个小型工具包可能包含的关键组件。 首先,XML解析器是处理XML...

    excel转换为xml小工具

    《Excel到XML转换小工具详解》 在信息技术领域,数据交换和存储的格式多样,XML(eXtensible Markup Language)作为一种结构化数据格式,常用于数据交换和存储,尤其在编程和API交互中占据重要地位。然而,对于非...

    HTTPXML 测试工具

    HTTPXML测试工具是一款专为开发者设计的高效便捷的软件,主要功能是用于测试基于HTTP协议并且涉及XML数据交互的应用程序或服务。它简化了HTTP请求的构造和发送过程,同时也支持解析和验证响应中的XML数据,这对于...

    html转xml小工具,包括源码

    这个小工具是用C#编程语言编写的,提供了一种方便的方法将HTML文档转换为结构化的XML格式。C#,作为微软.NET框架的一部分,拥有强大的XML处理能力,使得开发这样的工具变得相对简单。 在HTML与XML之间进行转换的...

    txt数据转换为xml数据的小工具

    标题中的“txt数据转换为xml数据的小工具”指的是一个实用程序,它的主要功能是将文本文件(.txt)中的数据转换成结构化的XML(可扩展标记语言)文件。这种转换对于那些需要处理结构化数据,特别是在编程环境中工作...

    检验xml文件有效性的小工具

    这个名为“检验xml文件有效性的小工具”的程序,就是为了解决这个问题而设计的,它允许用户在不懂Java编程的情况下也能验证XML文件的语法正确性。 该工具的核心是用Java语言编写的,这意味着它可以跨平台运行,只要...

    XML查看工具

    1. **节点明细**:工具将XML文档的元素结构分解为可读的节点层级,每个节点都清晰地标记出其类型(元素、属性、文本等)和内容,便于用户快速理解。 2. **搜索功能**:内置的搜索工具允许用户快速查找文档中的特定...

    xmlspy xml编辑工具

    总之,XMLSpy作为一款强大的XML工具,不仅能满足基本的编辑需求,还能应对复杂的XML处理任务,是XML开发者和IT专业人员的重要辅助工具。通过使用XMLSpy,可以显著提升工作效率,保证XML数据的质量和一致性。

    xml文档生成小工具

    这个“xml文档生成小工具”是专为简化XML文档创建而设计的,它提供了源码,不仅可以直接运行,还可以作为学习XML生成技术的参考。 XML的基本结构包括元素(Element)、属性(Attribute)、文本内容(Text Content)...

    Android APK xml 批量解密工具

    在网上找到了一个工具,可以完美地解密xml文件,但这个工具的使用方法是:调cmd 然后AndroidManifestConver.exe c:\src.xml c:\dest.xml(前者是原文,后者是解密后的文件)。如果需要解密的xml文件较多,这个办法...

    xsd生成xml工具

    "xsd生成xml工具"是一个实用程序,它允许开发者根据XSD文件创建符合该模式的示例XML文档。这个工具的亮点在于它提供了完整的源代码,这意味着用户不仅可以使用工具,还可以深入理解其工作原理,甚至进行自定义扩展。...

    XML文件解析编辑小工具

    "XML文件解析编辑小工具",如firstobject xml editor 2.4,是一款专为XML文档设计的轻量级编辑器,提供了对XML文件的深度解析和编辑功能。 这款工具的特色在于其绿色小巧的特性,意味着它无需安装即可使用,占用...

    xmlxml压缩工具

    “xmlxml压缩工具”可能是指一个专门针对XML文件进行压缩处理的软件或库。这种工具的主要功能可能是减小XML文件的大小,提高存储效率和网络传输速度。XML文件由于其结构特性,往往比文本文件大,特别是在包含大量...

    Beckhoff EtherCAT SSC 5.12 XML生成工具

    Beckhoff的SSC 5.12版本提供了一个XML生成工具,这个工具用于帮助开发者创建和管理EtherCAT从站设备的配置文件。XML文件在自动化工程中起着关键作用,因为它们能够以结构化的方式存储和传递设备配置信息。通过此工具...

    绿色小巧的XML查看编辑工具

    标题中的“绿色小巧”,意味着这款XML查看编辑工具具有体积小、占用资源少的特点,这样的设计使其能够在各种计算机环境中快速启动并运行,而不会对系统性能造成太大影响。同时,“绿色”也暗示这可能是一个免安装...

    xml开发工具xmlspy

    总之,XMLSpy2010作为一个强大的XML开发工具,无论对于初学者还是经验丰富的开发者,都是一个不可或缺的工具,它简化了XML的处理流程,提升了开发效率。通过深入学习和使用XMLSpy,开发者能够更好地理解和应用XML...

    xml配置工具xml配置工具

    xml配置工具xml配置工具xml配置工具xml配置工具xml配置工具xml配置工具xml配置工具xml配置工具

    windows平台XML解析工具

    Windows平台提供了多种XML解析工具,这些工具帮助开发者快速、高效地解析和查看XML文档,确保数据的准确性和完整性。本文将详细介绍Windows平台下的一款XML解析工具——foxe_CHS.exe,它是专为中文用户设计的版本。 ...

Global site tag (gtag.js) - Google Analytics