Android平台与Web服务数据交互时运用Java反射机制解析数据
的研究
摘要:在时下流行的Android平台上研究应用Java反射机制,提高开发Android软件的灵活性、可扩展性,使得软件系统具有自适应能力,并在运行时随外部环境的变化而改变自身,实现程序的动态演进。介绍了反射的概念和Java反射机制,对Android应用程序与Web服务进行的Xml数据交互时。采用反射机制实现了域对象(Domain Object)信息的动态解析并封装成JavaBean类供应用程序使用,并给出了具体实现方法实例。
关键词:Java反射机制;Xml数据交互;Web服务;Android 平台
0 引言
随着移动技术的不断发展,Android平台在3G领域持续走红,不少传统Web应用系统逐步向移动应用方面发展。从而加大了Web应用程序与Android应用程序之间的数据交互。如何高效地将数据转化成程序可用数据,成为了Android应用与Web 应用之间的关键。本文在以Xml数据格式交互数据的基础上结合Java反射机制和Android平台的Xml解析器(XmlPullParser),为减少代码的重复和增强代码的复用及提高数据交互的效率进
java反射的作用及应用场景
行研究。
1 Java反射机制与Android平台Xml解析
1.1 Java反射机制
Java反射机制是在运行状态中,动态获取类的信息以及动态调用对象方法的机制。这个机制允许程序在运行时通过调用Reflection APIs取得任何一个已知名称的Class的内部信息,既
包括其修饰符、基类、所实现的接口等,也包括Fields和Methods以及Constructor的所有信息,并可于运行时改变fields 内容或调用methods。
Java反射的实现主要是依赖java. lang. reflect包所提供的类。其中最经常使用的是如下三个类:
(1) java. lang. reflect .Field类
Field提供有关类或接口的单个域的信息。利用这个类我们可以得到一个类的所有域以及域中的数据。
(2) flect.Method类
Method提供关于类或接口上单独某个方法的信息。使用Method类可以获得并调用一个类中的任意方法,同时还可获取方法所带的参数。并通过Invoke方法调用该方法。
(3) java. lang. reflect. Constructor类
Constructor提供关于类的单个构造方法的信息。使用
Constructor类我们可以得到一个类的所有构造方法。
1.2 Java反射的操作步骤
使用JA V A反射机制的时候必须要遵循3个步骤:
①是获得你想操作的类的java. lang.Class对象。在运行中的Java程序,用java. lang.Class类来描述对象所属类和实现接口的信息;
②是调用Class类的诸如getDeclaredMethods的方法,以取得该类中定义的所有方法和域的反射对象列表;
③是利用②所取得的方法和域反射对象利用来操作这些信息。
1.3 XML Pull解析技术
Android并未提供对Java SAX API的支持。但是,Android 附带了一个pull解析器,其工作方式类似于SAX。它允许用户的应用程序代码从解析器中获取事件,这与SAX解析器自动将事件推入处理程序相反。
1.3.1 XML Pull的工作原理
XmlPullParser提供了开始元素和结束元素。首先创建一个XmlPullParser对象(wPullPa
rser),并设置Xml 文件输入流。然后当某个元素开始时,我们可以调用EnventType()判断当前读取的元素类型。元素类型有XmlPullParser.START_DOCUMENT,XmlPullParser.END_DOCU MENT,XmlPullParser.START_TAG,XmlPullParser.END_TAG;然
后调用Name()获取当前元素的标签名;调用AttributeName()获取元素的属性名称和AttributeValue()获取该属性的内容或调用Text()从XML元素中提取标签里的内容。当读取到END_DOCUMENT时Xml文件读取事件结束。
1.3.2 常用的XMLPull的接口和类
XmlPullParser:XMLpull解析器是一个在XMLPull V1 API 中提供了定义解析功能的接口。
XmlSerializer:它是一个接口,定义了Xml信息集的序列。
XmlPullParserFactory:这个类用于在XMPull V1 API中创建XMLPull解析器。
XmlPullParserException:抛出单一的XMLPull解析器异常。
关的错误。
1.3.3 XMLPullParser的实现
2 Android应用和Web服务数据交互过程
2.1 数据交互类型
Android应用程序和Web服务应用程序之间数据交互常用类型有如下3种:纯文本数据、Xml数据、Json数据。
纯文本数据交互后,可以直接应用到程序中,但是数据的可靠性,数据的容量多相对较小;Json数据交互若应用到Android
的应用程序中,需要按照Android平台提供的Json数据解析器解析后才可以应用,而在Web服务上则需要导入相应的Jar包并对Json数据解析后方可使用。Json数据有解析速度快,容量较大的特点,但是Json数据拼装比较麻烦,当交互大量数据时就显得臃肿繁琐。Xml数据交互无论Android平台还是Web服务多需经过相应的解析器解析后才可使用。Xml数据交互不仅交互容量大,解析便捷还具有拼装简单、安全性高等特点。
2.2 Android应用和Web服务数据交互示意图
3 Java反射机制配合XmlPullParser解析Xml数据的设计思路
本文为Android平台与web服务数据交互时运用JA V A反射机制配合XmlPullParser解析器解析交互数据提供设计思路。文中用到的技术在前文均以做了讲解,若有不懂请参考文献或相关资料。
3.1 设计思路
设计前提:利用平台之间两个应用交互数据的协议(这里指SOAP协议),编写JavaBean类便于将交互的数据进行封装。
我们的设计思路是,首先利用反射取得动态JavaBean对象中我们需要的域及对应的值,然后根据Xml解析的数据封装到对应的动态JavaBean对象中。具体思路如下:
在解析Xml类的构造方法中获取直接继承此类的所有类的泛型