将类转为XML文件格式

文章目录

  • jar包是dom4j-1.6.1
  • 示例
  • 代码
  • 结果
  • 注意事项

jar包是dom4j-1.6.1

示例

以下的例子类是用DeliverOrder类做示范的。
里面大概嵌套了五层
将类转为XML文件格式_第1张图片

代码

package Util;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.lang.reflect.Field;
import java.util.ArrayList;

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;

import entity.BillBody;
import entity.BillOrder;
import entity.DeliverActualCarrierInfo;
import entity.DeliverBody;
import entity.DeliverConsigneeInfo;
import entity.DeliverConsignorInfo;
import entity.DeliverDriver;
import entity.DeliverGoodsInfo;
import entity.DeliverOrder;
import entity.DeliverVehicleInfo;
import entity.DriverBody;
import entity.DriverOrder;
import entity.Financial;
import entity.Header;
import entity.ShippingNote;
import entity.VehicleBody;
import entity.VehicleOrder;

public class ConvertClassToXml {
	

	public static void main(String[] args) {
		generateDeliverOrder();//运单
	}
	
	
	private static void  generateDeliverOrder() {
		             //一个运单
				DeliverOrder order=new DeliverOrder();	
				//头
				Header header=new Header();	
				//body
				DeliverBody body=new DeliverBody();	
				//托运人信息
				DeliverConsigneeInfo deliverConsigneeInfo=new DeliverConsigneeInfo();
				//收货方信息
				DeliverConsignorInfo deliverConsignorInfo=new DeliverConsignorInfo();
				//车信息
				DeliverVehicleInfo deliverVehicleInfo=new DeliverVehicleInfo();
				//司机会有多个
				DeliverDriver deliverDriver=new DeliverDriver();
				//货物信息会有多个
				DeliverGoodsInfo deliverGoodsInfo=new DeliverGoodsInfo();
				//实际承运人
				DeliverActualCarrierInfo deliverActualCarrierInfo=new DeliverActualCarrierInfo();
				body.setConsigneeInfo(deliverConsigneeInfo);
				body.setConsignorInfo(deliverConsignorInfo);
				ArrayList drivelist=new ArrayList();
				drivelist.add(deliverDriver);
				ArrayList goodslist=new ArrayList();
				goodslist.add(deliverGoodsInfo);
				deliverVehicleInfo.setDriver(drivelist);
				deliverVehicleInfo.setGoodsInfo(goodslist);
				body.setActualCarrierInfo(deliverActualCarrierInfo);
				body.setVehicleInfo(deliverVehicleInfo);
				order.setHeader(header);
				order.setBody(body);
				ConvertClassToXml(order);
	}
	
	
	
	

	//将一个类转为xml文件
	private static void ConvertClassToXml(Object obj)  {
		if(obj==null) {
			System.out.println("为空不需要生成XML文件");
		}else {
			Document document = DocumentHelper.createDocument();
			Element root=document.addElement("Root");
			getField(obj,root);
			
			//File file=new File("C:\\Users\\Lenovo\\Desktop\\test_xml.xml");
			System.out.println(document.asXML());
			//doSaveFile(file,document);
		}
	}
	
	

	
	private static void getField(Object obj,Element element)  {
	  if(obj!=null) {
		Field[] fields=obj.getClass().getDeclaredFields();//获取全部属性
		//遍历属性
		for(int i=0;i

结果




  

注意事项

1.值的类型是一个自定义的类或者是Arraylist 这种类型的,如果值为null ,干脆整个标签就不画了。
2.如果是基础类型那种,如果为null,xml会画标签,但是值塞空字符串。
3.代码偷懒了,基础类型只判断了String类型,然后集合只判断了Arraylist 。

你可能感兴趣的:(eclipse,JAVA,xml,java)