xml如下:
<?xml version="1.0" encoding="utf-8"?>
<suppliers>
<supplier>
<!--供应商名称,最大长度为20,类型为:String-->
<supname>张三</supname>
<!--纳税人识别号,最大长度为50,类型为:String-->
<taxnum>62836458326856836</taxnum>
<!--供应商基本分类,最大长度为50,类型为:String-->
<supclass>01</supclass>
<!--创建人,最大长度为50,类型为:String-->
<creator>李慧</creator>
<!--创建时间,最大长度为50,类型为:String,格式YY-MM-dd HH-mm-ss-->
<cteatetime>2021-09-08 12:34:57</cteatetime>
<bankacc>
<!--账号,最大长度为50,类型为:String-->
<accnum>235325</accnum>
<!--开户银行,最大长度为50,类型为:String-->
<pk_bankdoc>北清路支行</pk_bankdoc>
<!--户名,最大长度为50,类型为:String-->
<accname>张三</accname>
</bankacc>
<bankacc>
<!--账号,最大长度为50,类型为:String-->
<accnum>2353251</accnum>
<!--开户银行,最大长度为50,类型为:String-->
<pk_bankdoc>北清路支行</pk_bankdoc>
<!--户名,最大长度为50,类型为:String-->
<accname>张三</accname>
</bankacc>
</supplier>
<supplier>
<!--供应商名称,最大长度为20,类型为:String-->
<supname>张三</supname>
<!--纳税人识别号,最大长度为50,类型为:String-->
<taxnum>62836458326856836</taxnum>
<!--供应商基本分类,最大长度为50,类型为:String-->
<supclass>01</supclass>
<!--创建人,最大长度为50,类型为:String-->
<creator>李慧</creator>
<!--创建时间,最大长度为50,类型为:String,格式YY-MM-dd HH-mm-ss-->
<cteatetime>2021-09-08 12:34:57</cteatetime>
<bankacc>
<!--账号,最大长度为50,类型为:String-->
<accnum>235325</accnum>
<!--开户银行,最大长度为50,类型为:String-->
<pk_bankdoc>北清路支行</pk_bankdoc>
<!--户名,最大长度为50,类型为:String-->
<accname>张三</accname>
</bankacc>
<bankacc>
<!--账号,最大长度为50,类型为:String-->
<accnum>2353251</accnum>
<!--开户银行,最大长度为50,类型为:String-->
<pk_bankdoc>北清路支行</pk_bankdoc>
<!--户名,最大长度为50,类型为:String-->
<accname>张三</accname>
</bankacc>
</supplier>
</suppliers>
vo类如下:
SupplierData.java
package nc.ws.bean;
import java.io.Serializable;
import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "suppliers")
@XmlType(propOrder = { "supplier"})
public class SupplierData implements Serializable{
@XmlElement(name="supplier")
private List<SupplierBean> supplier;
public List<SupplierBean> getSupplier() {
return supplier;
}
public void setSupplier(List<SupplierBean> supplier) {
this.supplier = supplier;
}
}
SupplierBean.java
package nc.ws.bean;
import java.io.Serializable;
import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(propOrder = { "supname","taxnum","supclass","creator","cteatetime","bankacc"})
public class SupplierBean implements Serializable{
@XmlElement(name="supname")
private String supname;
@XmlElement(name="taxnum")
private String taxnum;
@XmlElement(name="supclass")
private String supclass;
@XmlElement(name="creator")
private String creator;
@XmlElement(name="cteatetime")
private String cteatetime;
@XmlElement(name="bankacc")
private List<Bankacc> bankacc;
public List<Bankacc> getBankacc() {
return bankacc;
}
public void setBankacc(List<Bankacc> bankacc) {
this.bankacc = bankacc;
}
public String getSupname() {
return supname;
}
public void setSupname(String supname) {
this.supname = supname;
}
public String getTaxnum() {
return taxnum;
}
public void setTaxnum(String taxnum) {
this.taxnum = taxnum;
}
public String getSupclass() {
return supclass;
}
public void setSupclass(String supclass) {
this.supclass = supclass;
}
public String getCreator() {
return creator;
}
public void setCreator(String creator) {
this.creator = creator;
}
public String getCteatetime() {
return cteatetime;
}
public void setCteatetime(String cteatetime) {
this.cteatetime = cteatetime;
}
}
Bankacc.java
package nc.ws.bean;
import java.io.Serializable;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlAccessorType(XmlAccessType.FIELD)
public class Bankacc implements Serializable{
private static final long serialVersionUID = 9192284450257782640L;
public String accnum;
public String pk_bankdoc;
public String accname;
public String getAccnum() {
return accnum;
}
public void setAccnum(String accnum) {
this.accnum = accnum;
}
public String getPk_bankdoc() {
return pk_bankdoc;
}
public void setPk_bankdoc(String pk_bankdoc) {
this.pk_bankdoc = pk_bankdoc;
}
public String getAccname() {
return accname;
}
public void setAccname(String accname) {
this.accname = accname;
}
}
解析工具:
package nc.ws.utils;
import java.io.StringReader;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
/**
* Jaxb2工具类
* @
*
*/
public class JaxbUtil {
/**
* JavaBean转换成xml
* 默认编码UTF-8
* @param obj
* @param writer
* @return
*/
public static String convertToXml(Object obj) {
return convertToXml(obj, "UTF-8");
}
/**
* JavaBean转换成xml
* @param obj
* @param encoding
* @return
*/
public static String convertToXml(Object obj, String encoding) {
// File xmlFile = new File("C:/TestJaxb.xml");
String result = null;
try {
JAXBContext context = JAXBContext.newInstance(obj.getClass());
Marshaller marshaller = context.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.setProperty(Marshaller.JAXB_ENCODING, encoding);
StringWriter writer = new StringWriter();
marshaller.marshal(obj, writer);
result = writer.toString();
System.out.println(result);
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
/**
* xml转换成JavaBean
* @param xml
* @param c
* @return
*/
@SuppressWarnings("unchecked")
public static <T> T convertToJavaBean(String xml, Class<T> c) {
T t = null;
try {
JAXBContext context = JAXBContext.newInstance(c);
Unmarshaller unmarshaller = context.createUnmarshaller();
t = (T) unmarshaller.unmarshal(new StringReader(xml.replace("&", "&")));
} catch (Exception e) {
e.printStackTrace();
}
return t;
}
}