//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格式重新转换为对象
}
}