大家好,我是成都LD。相信大家会经常遇到XML解析的问题,通常,在我们遇到这类问题时,会使用dom4j或jdom对XML每个节点进行遍历,然后判断某个节点是不是我们所需要的,再进行后续的操作。
今天我们介绍如何直接将XML节点映射为实体类的成员变量,即将XML转换为JAVA实体类。
这里我们用到的是jdk自身带的xjc.exe程序。xjc.exe存在于jdk的bin目录中,如果你的JDK目录中没有该文件,可以尝试一下重新安装jdk。
xjc是通过将schema文件转换为java实体类。因此我们需要根据XML写出对应的schema文件(如果你对schema文件不太了解,建议先到W3CSchool看下Schema的资料)。假设有如下XML文件
<?xml version="1.0" encoding="utf-8"?> <Objects> <Object name="hello"> <Properties name="a1"> aaa </Properties> <Properties name="a1"> bbb </Properties> </Object> </Objects>
现在我们需要根据XML写出对应的Schema文件
<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="Property"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Name" type="xs:string" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="Object"> <xs:complexType> <xs:sequence> <xs:element ref="Property" maxOccurs="unbounded" /> </xs:sequence> <xs:attribute name="name" type="xs:string" /> </xs:complexType> </xs:element> <xs:element name="Objects"> <xs:complexType> <xs:sequence> <xs:element ref="Object" maxOccurs="unbounded" /> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
写好schema文件之后,我们使用xjc来将schema文件转换为JAVA类。我将其schema文件拷贝到c盘,然后新建test目录,执行以下命令,然后我们的test文件夹中就会产生对应的JAVA文件。如果命令执行过程中有什么异常,请注意异常信息,然后分析解决。
我这里只是举了一个简单例子,具体情况根据自身需要来写