使用JAXB解析xml檔案

2022-09-23 19:57:07 字數 3641 閱讀 9185

1.@xmlrootelement

用於類級別的註解,對應xml的跟元素,常與 @xmltype 和 @xmlaccessortype一起使用,主要的作用是對映xml的根節點

2.@xmlelement

將j**a物件的屬性對映為xml的節點,在使用@xmlelement時,可通過name屬性改變j**a物件屬性在xml中顯示的名稱。

@xmlelement(name="class")

private string clz;3.@xmlelements

當節點下面包含多個相同的子節點時,該註解可以對映成乙個j**abean的集合屬性,其中註解中value的屬性對應的是乙個@xmlelement的集合

1 @xmlelements(value = )

2 private list selects;4.@xmlattribute 用於把j**a物件的屬性對映為xml的屬性,並可通過name屬性為生成的xml屬性指定別名@xmlattribute(name = "id")

private string id;5.@xmlaccessortype 用於指定由j**a物件生成xml檔案時對j**a物件屬性的訪問方式。常與@xmlrootelement、@xmltype一起使用。它的屬性值是xmlaccesstype的4個列舉值,分別為:xmlaccesstype.field:j**a物件中的所有成員變數xmlaccesstype.property:j**a物件中所有通過getter/setter方式訪問的成員變數xmlaccesstype.public_member:j**a物件中所有的public訪問許可權的成員變數和通過getter/setter方式訪問的成員變數xmlaccesstype.none:j**a物件的所有屬性都不對映為xml的元素  注意:@xmlaccessortype的預設訪問級別是xmlaccesstype.public_member,因此,如果j**a物件中的private成員變數設定了public許可權的getter/setter方法,就不要在private變數上使用@xmlelement和@xmlattribute註解,否則在由j**a物件生成xml時會報同乙個屬性在j**a類裡存在兩次的錯誤。同理,如果@xmlaccessortype的訪問許可權為xmlaccesstype.none,如果在j**a的成員變數上使用了@xmlelement或@xmlattribute註解,這些成員變數依然可以對映到xml檔案。  注意:雖然@xmlaccessortype為xmlaccesstype.none,但是在j**a類的私有屬性上加了@xmlattribute和@xmlelement註解後,這些私有成員會對映生成xml的元素?6.@xmlaccessororder 用於對j**a物件生成的xml元素進行排序。它有兩個屬性值: accessororder.alphabetical:對生成的xml元素按字母書序排序 xmlaccessorder.undefined:不排序7.@xmltransient 用於標示在由j**a物件對映xml時,忽略此屬性。即,在生成的xml檔案中不出現此元素。8.@xmlj**atypeadapter 常用在轉換比較複雜的物件時,如map型別或者格式化日期等。使用此註解時,需要自己寫乙個adapter類繼承xmladapter抽象類,並實現裡面的方法。? ? ? ?package org.lyrk.accp8.s2.chapter.xml;

import j**ax.xml.bind.annotation.adapters.xmladapter;

import j**a.text.dateformat;

import j**a.text.******dateformat;

import j**a.util.date;

/** * 時間格式的轉化器

* created by niechen on 17/5/9.

*/public class datexmladapter extends xmladapter

@override

public string marshal(date v) throws exception

}9.示例**9.1 擴充套件bean類package org.lyrk.accp8.s2.chapter.xml;

import j**ax.xml.bind.annotation.*;

import j**ax.xml.bind.annotation.adapters.xmlj**atypeadapter;

import j**a.util.date;

import j**a.util.list;

/** * created by niechen on 17/5/9.

*/@xmlrootelement

@xmlaccessortype(xmlaccesstype.field)

@xmlaccessororder(value = xmlaccessorder.alphabetical)

public class bean )

private list properties;//獲取xml中所有property節點

public date getdate()

public void setdate(date date)

public list getproperties()

public void setproperties(list properties)

public string getid()

public void setid(string id)

public string getclz()

public void setclz(string clz)

}@xmlaccessortype(value = xmlaccesstype.field)

class property

public void setid(string id)

public string getvalue()

public void setvalue(string value)

}9.2 beans.xml檔案

2017-05-08 11:22:33

9.3 主函式入口 1 package org.lyrk.accp8.s2.chapter.xml;

2 3 import j**ax.xml.bind.jaxbcontext;

4 import j**ax.xml.bind.jaxbexception;

5 import j**ax.xml.bind.unmarshaller;

6 import j**a.io.inputstream;

7 8 /**

9 * created by niechen on 17/5/9.

10 */

11 public class test

25} catch (jaxbexception e)

28 }

29 }

30 輸出結果:

31 id:student

32 class:org.test.entity.student

33 date:1483845753000

34 property id屬性:nameproperty value屬性:張三

35 property id屬性:ageproperty value屬性:18?鄭州好的**醫院:鄭州同濟醫院**好:鄭州醫院**哪家好些:鄭州正規專業**醫院:鄭州專業**:鄭州****諮詢:鄭州檢查**去哪個醫院:鄭州**醫院:

使用PULL解析XML檔案

pull解析器的執行方式與 sax 解析器相似。它提供了類似的事件,如 開始元素和結束元素事件,使用parser.next 可以進入下乙個元素並觸發相應事件。事件將作為數值 被傳送,因此可以使用乙個switch對感興趣的事件進行處理。當元素開始解析時,呼叫parser.nexttext 方法可以獲取...

使用SAX解析xml檔案

解析xml檔案有好幾種方法,包括有 dom jdom sax解析 demo4j 等等 本篇主要講解sax是如何解析xml檔案的。專案結構如下 新建乙個parserutil類,繼承自defaulthandler,並重寫五個方法 startdocument startelement characters...

使用Dom生成xml檔案和解析xml檔案

xml這種檔案格式在很多時候都是很適合我們用來訪問資料的,所以利用程式來生成xml檔案和解析xml檔案就顯得比較重要了。在dom中是把每乙個元素都看做是乙個節點node的,所有頁面上的屬性 元素等都是繼承自node的,所以當獲取到的是乙個node,而你知道它實際的型別並需要使用的時候就可能會需要進行...