大家好,我是成都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文件。如果命令执行过程中有什么异常,请注意异常信息,然后分析解决。

我这里只是举了一个简单例子,具体情况根据自身需要来写

wKioL1RqvWTBk06xAACdV24lNFs034.jpg