大家好,我是成都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文件。如果命令執行過程中有什麼異常,請注意異常信息,然後分析解決。
我這裏只是舉了一個簡單例子,具體情況根據自身需要來寫