解析xml

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("&", "&amp;")));
        } catch (Exception e) {
            e.printStackTrace();
        }

        return t;
    }

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值