上代码:
说一下思路,xml主要起到在web服务之间传递数据的作用。比如:某应用需要用户的信息,调用别的接口返回了xml格式的数据。
其中就保存了用户数据,其中的某段结构可能如下:
<User>
<name>张三</name>
<age>22</age>
<sex>男</sex>
</User>
这段xml可能只属于返回值的一部分,被层层xml节点包围着。也许这样的片段会出现多次,表示多个用户的数据。
那么用xpath来查找出所有的User节点就行了,dom4j拥有很强大的xpath查询功能。在使用xpath时可能会遇到xml命名空间的问题,我下次再说。
这些体现对象数据的xml片段的格式很可能没有我举例得这么简单,但我假设User节点之下的所有包含数据的子节点都是对象属性的一部分。用递归法遍历所有子节点,将取得的数据和对应的节点名存在Map里面。
用java的反射机制,来动态实例化对象。传入的classType就是将要实力化的对象的类型。用不带参数的构造函数实例化对象之后,在调用每个属性各自的set方法,将数据填充到对象之中。