java xml和bean互相转换

//1:java to xml
String xml = XmlUtil.java2Xml(WorkOrder,"UTF-8");
//2:xml to java
WorkOrder work = (WorkOrder)XmlUtil.xml2Java(xmlStr,WorkOrder.class);

WorkOrder:

package dockingESKO.entity;

import java.util.List;

import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;


/**
 * 工单
 */
@XmlRootElement(name = "WorkOrder")
public class WorkOrder {
	public WorkOrder(){
		
	}
	private String workOrderNumber;//工单号
	private String customer;//客户
	private String amount;//数量
	private String product;//产品名
	private String dateOfDelivery;//交货日期
	private String custOrderNumber;//客户订单号
	private String orderNumber;//订单号
	private String productSize;//产品尺寸
	private String contribution;//来稿
	private String printingMeth;//印刷方式
	private String archNumber;//版号(档案编号)
	private String deliveryRemarks;//送货备注
	private String packingMeth;//包装方式
	private String packingAmount;//包装数量
	private String packingRemarks;//包装备注
	private String productRemarks;//产品备注
	private String salesMan;//业务员
	private String createMan;//开单人
	private String verifyMan;//审核人
	private String createDate;//开单日期
	
	private List<Part> partList;//部件集合
	
	private List<Process> endProcessList;//成型工艺集合
	
	private List<Material> materialList;//用料集合
	@XmlAttribute
	public String getWorkOrderNumber() {
		return workOrderNumber;
	}
	public void setWorkOrderNumber(String workOrderNumber) {
		this.workOrderNumber = workOrderNumber;
	}
	public String getCustomer() {
		return customer;
	}
	public void setCustomer(String customer) {
		this.customer = customer;
	}
	public String getAmount() {
		return amount;
	}
	public void setAmount(String amount) {
		this.amount = amount;
	}
	public String getProduct() {
		return product;
	}
	public void setProduct(String product) {
		this.product = product;
	}
	public String getDateOfDelivery() {
		return dateOfDelivery;
	}
	public void setDateOfDelivery(String dateOfDelivery) {
		this.dateOfDelivery = dateOfDelivery;
	}
	public String getCustOrderNumber() {
		return custOrderNumber;
	}
	public void setCustOrderNumber(String custOrderNumber) {
		this.custOrderNumber = custOrderNumber;
	}
	public String getOrderNumber() {
		return orderNumber;
	}
	public void setOrderNumber(String orderNumber) {
		this.orderNumber = orderNumber;
	}
	public String getProductSize() {
		return productSize;
	}
	public void setProductSize(String productSize) {
		this.productSize = productSize;
	}
	public String getContribution() {
		return contribution;
	}
	public void setContribution(String contribution) {
		this.contribution = contribution;
	}
	public String getArchNumber() {
		return archNumber;
	}
	public void setArchNumber(String archNumber) {
		this.archNumber = archNumber;
	}
	public String getDeliveryRemarks() {
		return deliveryRemarks;
	}
	public void setDeliveryRemarks(String deliveryRemarks) {
		this.deliveryRemarks = deliveryRemarks;
	}
	public String getPackingMeth() {
		return packingMeth;
	}
	public void setPackingMeth(String packingMeth) {
		this.packingMeth = packingMeth;
	}
	public String getPackingAmount() {
		return packingAmount;
	}
	public void setPackingAmount(String packingAmount) {
		this.packingAmount = packingAmount;
	}
	public String getPackingRemarks() {
		return packingRemarks;
	}
	public void setPackingRemarks(String packingRemarks) {
		this.packingRemarks = packingRemarks;
	}
	public String getProductRemarks() {
		return productRemarks;
	}
	public void setProductRemarks(String productRemarks) {
		this.productRemarks = productRemarks;
	}
	public String getSalesMan() {
		return salesMan;
	}
	public void setSalesMan(String salesMan) {
		this.salesMan = salesMan;
	}
	public String getCreateMan() {
		return createMan;
	}
	public void setCreateMan(String createMan) {
		this.createMan = createMan;
	}
	public String getVerifyMan() {
		return verifyMan;
	}
	public void setVerifyMan(String verifyMan) {
		this.verifyMan = verifyMan;
	}
	public String getCreateDate() {
		return createDate;
	}
	public void setCreateDate(String createDate) {
		this.createDate = createDate;
	}
	@XmlElementWrapper(name="partList")
	@XmlElement(name="part")
	public List<Part> getPartList() {
		return partList;
	}
	public void setPartList(List<Part> partList) {
		this.partList = partList;
	}
	@XmlElementWrapper(name="endProcessList")
	@XmlElement(name="endProcess")  
	public List<Process> getEndProcessList() {
		return endProcessList;
	}
	public void setEndProcessList(List<Process> endProcessList) {
		this.endProcessList = endProcessList;
	}
	public String getPrintingMeth() {
		return printingMeth;
	}
	public void setPrintingMeth(String printingMeth) {
		this.printingMeth = printingMeth;
	}
	@XmlElementWrapper(name="materialList")
	@XmlElement(name="material")
	public List<Material> getMaterialList() {
		return materialList;
	}
	public void setMaterialList(List<Material> materialList) {
		this.materialList = materialList;
	}
	
	
	
}

Material:

package dockingESKO.entity;
/**原料*/
public class Material {
	public void Material(){
		
	}
	private String material;//料名
	private String mateSize;//料规格
	private String mateAmount;//用料数量
	private String openingSize;//开料尺寸(原料)
	public String getMaterial() {
		return material;
	}
	public void setMaterial(String material) {
		this.material = material;
	}
	public String getMateSize() {
		return mateSize;
	}
	public void setMateSize(String mateSize) {
		this.mateSize = mateSize;
	}
	public String getMateAmount() {
		return mateAmount;
	}
	public void setMateAmount(String mateAmount) {
		this.mateAmount = mateAmount;
	}
	public String getOpeningSize() {
		return openingSize;
	}
	public void setOpeningSize(String openingSize) {
		this.openingSize = openingSize;
	}
	
	
}

Part:

package dockingESKO.entity;

import java.util.List;

import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;

public class Part {
	public void Part(){
		
	}
	private String partName;//部件名
	private String printMachine;//印机
	private String printAmount;//印刷数
	private String printingMeth;//印刷方式
	private String openingSize;//开料尺寸
	private String pNumber;//联拼数
	private String printCol;//印色
	private String specialCol;//专色
	private String pull;//拉规
	private String pullOther;//反面拉规
	private String mf;//门幅
	private String tj;//跳距-甩长
	
	private List<Process> processList;//后道工艺集合
	public String getPartName() {
		return partName;
	}
	public void setPartName(String partName) {
		this.partName = partName;
	}
	public String getPrintMachine() {
		return printMachine;
	}
	public void setPrintMachine(String printMachine) {
		this.printMachine = printMachine;
	}
	public String getPrintAmount() {
		return printAmount;
	}
	public void setPrintAmount(String printAmount) {
		this.printAmount = printAmount;
	}
	public String getOpeningSize() {
		return openingSize;
	}
	public void setOpeningSize(String openingSize) {
		this.openingSize = openingSize;
	}
	public String getpNumber() {
		return pNumber;
	}
	public void setpNumber(String pNumber) {
		this.pNumber = pNumber;
	}
	public String getPrintCol() {
		return printCol;
	}
	public void setPrintCol(String printCol) {
		this.printCol = printCol;
	}
	public String getSpecialCol() {
		return specialCol;
	}
	public void setSpecialCol(String specialCol) {
		this.specialCol = specialCol;
	}
	@XmlElementWrapper(name="processList")
	@XmlElement(name="process") 
	public List<Process> getProcessList() {
		return processList;
	}
	public void setProcessList(List<Process> processList) {
		this.processList = processList;
	}
	public String getPrintingMeth() {
		return printingMeth;
	}
	public void setPrintingMeth(String printingMeth) {
		this.printingMeth = printingMeth;
	}
	public String getPull() {
		return pull;
	}
	public void setPull(String pull) {
		this.pull = pull;
	}
	public String getMf() {
		return mf;
	}
	public void setMf(String mf) {
		this.mf = mf;
	}
	public String getTj() {
		return tj;
	}
	public void setTj(String tj) {
		this.tj = tj;
	}
	public String getPullOther() {
		return pullOther;
	}
	public void setPullOther(String pullOther) {
		this.pullOther = pullOther;
	}
	
	
	
}

Process:

package dockingESKO.entity;

/**
 * 工艺
 */
public class Process {
	public void Process(){
		
	}
	private String process;//工艺名
	private String amount;//工艺数
	private String cutDieNumber;//模号
	public String getProcess() {
		return process;
	}
	public void setProcess(String process) {
		this.process = process;
	}
	public String getAmount() {
		return amount;
	}
	public void setAmount(String amount) {
		this.amount = amount;
	}
	public String getCutDieNumber() {
		return cutDieNumber;
	}
	public void setCutDieNumber(String cutDieNumber) {
		this.cutDieNumber = cutDieNumber;
	}
	
	
}

XMLUtil: 

package dockingESKO.util;

import java.io.ByteArrayInputStream;
import java.io.StringWriter;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.List;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;

import dockingESKO.entity.WorkOrder;

public class XmlUtil {

	/**
	 * xml文档Document转对象
	 * 
	 * @param document
	 * @param clazz
	 * @return
	 */
	public static Object getObject(Document document, Class<?> clazz) {
		Object obj = null;
		// 获取根节点
		Element root = document.getRootElement();
		try {
			obj = clazz.newInstance();// 创建对象
			List<Element> properties = root.elements();
			for (Element pro : properties) {
				// 获取属性名(首字母大写)
				String propertyname = pro.getName();
				String propertyvalue = pro.getText();
				Method m = obj.getClass().getMethod("set" + propertyname,
						String.class);
				m.invoke(obj, propertyvalue);
			}

		} catch (Exception e) {
			e.printStackTrace();
		}
		return obj;
	}

	/**
	 * xml字符串转对象
	 * 
	 * @param xmlString
	 * @param clazz
	 * @return
	 * @throws Exception 
	 */
	public static Object getObject(String xmlString, Class<?> clazz) throws Exception {
		Document document = null;
		try {
			document = DocumentHelper.parseText(xmlString);
		} catch (DocumentException e) {
			throw new Exception("获取Document异常" + xmlString);
		} // 获取根节点
		return getObject(document, clazz);
	}

	/**
	 * 对象转xml文件
	 * 
	 * @param b
	 * @return
	 */
	public static Document getDocument(Object b) {
		Document document = DocumentHelper.createDocument();
		try {
			// 创建根节点元素
			Element root = document.addElement(b.getClass().getSimpleName());
			Field[] field = b.getClass().getDeclaredFields(); // 获取实体类b的所有属性,返回Field数组
			for (int j = 0; j < field.length; j++) { // 遍历所有有属性
				String name = field[j].getName(); // 获取属属性的名字
				if (!name.equals("serialVersionUID")) {// 去除串行化序列属性
					name = name.substring(0, 1).toUpperCase()
							+ name.substring(1); // 将属性的首字符大写,方便构造get,set方法
					Method m = b.getClass().getMethod("get" + name);
					// System.out.println("属性get方法返回值类型:" + m.getReturnType());
					String propertievalue = (String) m.invoke(b);// 获取属性值
					Element propertie = root.addElement(name);
					propertie.setText(propertievalue);
				}
			}

		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();

		}

		return document;
	}
	/**
	 * java Bean 转 xml
	 * @param obj
	 * @param encoding
	 * @return
	 * @throws JAXBException
	 * 2018-3-13
	 */
	 public static String java2Xml(Object obj, String encoding) throws JAXBException {  
	        String result = null;  
	  
	        JAXBContext context = JAXBContext.newInstance(obj.getClass());  
	        Marshaller marshaller = context.createMarshaller();  
	  
	        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);  
	        marshaller.setProperty(Marshaller.JAXB_ENCODING, encoding);  
	        marshaller.setProperty(Marshaller.JAXB_FRAGMENT, false);  
	  
	        StringWriter writer = new StringWriter(); 
	        marshaller.marshal(obj, writer);  
	        result = writer.toString();  
	        return result;  
	    }
	 /**
	  * xml字符串转bean
	  * @param xmlStr
	  * @param load
	  * @return
	  * @throws Exception
	  * 2018-3-13
	  */
	 public static Object xml2Java(String xmlStr,Class<?> load) throws Exception {  
		JAXBContext context = JAXBContext.newInstance(load);
		Unmarshaller unmarshaller = context.createUnmarshaller();
		Object object = unmarshaller.unmarshal(new ByteArrayInputStream(xmlStr
				.getBytes("utf-8")));
		return object;
    }  
	/**
	 * 对象转xml格式的字符串
	 * 
	 * @param b
	 * @return
	 */
	public static String getXmlString(Object b) {
		return getDocument(b).asXML();
	}

	public static void main(String[] args) {
//		BankData bank = new BankData("1233", "2017-06-13 10:24:31", "EEEEEE=",
//				"000091", "0021");// 创建一个任意实体对象
//		System.out.println(XmlUtil.getXmlString(bank));// 调用方法把对象转xml格式
//		System.out.println(XmlUtil.getObject(XmlUtil.getXmlString(bank),
//				BankData.class));// 调用getXmlString()方法把xml格式重新转换为对象
	}

}

猜你喜欢

转载自my.oschina.net/return/blog/1786216
今日推荐