最近項(xiàng)目原因,研究了下jaxb。jaxb是Java api xml binding的簡(jiǎn)稱,是為實(shí)現(xiàn)java與xml數(shù)據(jù)的相互轉(zhuǎn)換而定義的一個(gè)api標(biāo)準(zhǔn)。該標(biāo)準(zhǔn)以annotation的方式實(shí)現(xiàn)xml的轉(zhuǎn)換。不用開發(fā)人員單獨(dú)解析每個(gè)對(duì)象屬性與xml元素的mapping關(guān)系,只需在java bean中注入簡(jiǎn)單的java annotation,其他的交給工具去處理。該工具包類能給xml數(shù)據(jù)處理帶來(lái)極大方便。具體實(shí)現(xiàn)見下。
Java bean對(duì)象定義:
說(shuō)明:上文定義了一個(gè)促銷對(duì)象類Promotion.
類標(biāo)注表示:
@XmlRootElement:用于定義該對(duì)象映射成xml根節(jié)點(diǎn)元素名,默認(rèn)與類名一致。可通過@XmlRootElement(name="otherRootElement")方式指定具體名稱。
@XmlAccessorType: 用于標(biāo)識(shí)該java對(duì)象與xml映射的訪問方式。有如下屬性值。
PROPERTY/FIELD/PUBLIC_MEMBER/NONE
PROPERTY: 所有set/get方法對(duì)將被映射為xml元素.除非被XmlTransient標(biāo)注例外.
FIELD:所有對(duì)象屬性將被映射為xml元素。除非被XmlTransient標(biāo)注例外.
PUBLIC_MEMBER:每個(gè)public的get/set對(duì)方法或public field將被映射為xml元素。除非被XmlTransient標(biāo)注例外.
NONE:沒有fields 或 property被映射,除非顯示指定具體fields或property。
屬性標(biāo)注表示:
@XmlTransient:指對(duì)應(yīng)屬性不做xml映射。
@XmlElement(name="product"):指定屬性映射時(shí)對(duì)應(yīng)xml元素名稱
@XmlElementWrapper(name="products"):在某些場(chǎng)景下,需要對(duì)映射的屬性做包裝處理。如例子中products List對(duì)象屬性,在xml中我想在映射對(duì)所有的product元素再做一個(gè)products 元素包裝,如下所示,就可以按此種方式實(shí)現(xiàn)。
<products>
<product> … </product>
…
</products>
Java與xml映射方法
Java對(duì)象到XML
XML到Java對(duì)象
Powered by: BlogJava Copyright © 月下孤城