通过类反射生成xml文件
发布时间:2020-12-16 06:21:33 所属栏目:百科 来源:网络整理
导读:解析xml地址: http://www.jb51.cc/article/p-ksbncxie-rq.html 入口测试类: 注: class 有很多方法需看java的api package priv.yingmm.main;import java.io.ByteArrayInputStream;import java.io.FileOutputStream;import java.lang.reflect.Field;import
解析xml地址:
http://www.52php.cn/article/p-ksbncxie-rq.html
入口测试类: 注:class 有很多方法需看java的api package priv.yingmm.main; import java.io.ByteArrayInputStream; import java.io.FileOutputStream; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.w3c.dom.Document; import priv.yingmm.entity.Area; /** * @Description: xml生成测试类 * @ClassName: ReflexTest * @author yingmm * @date 2015-5-2 下午08:53:21 * */ public class ReflexTest { public static void main(String[] args) throws Exception { /**S 测试数据*/ List<Area> areaList = new ArrayList<Area>(); for (int i = 0; i < 10; i++) { areaList.add(new Area("33022" + i,"宁波市",3000)); } /**E 测试数据*/ /**S 生成xml和写入数据*/ DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); String parseStr = ReflexTest.parseStr(areaList); Document document = db.parse(new ByteArrayInputStream(parseStr.getBytes())); TransformerFactory tf = TransformerFactory.newInstance(); Transformer t = tf.newTransformer(); t.setOutputProperty("encoding","utf-8"); DOMSource doms = new DOMSource(document.getDocumentElement()); StreamResult sr = new StreamResult(new FileOutputStream("area.xml")); t.transform(doms,sr); /**E 生成xml和写入数据*/ } /** * @param 集合拼接转换成字符串 * @author yingmm * @throws Exception */ private static String parseStr(List list) throws Exception { // TODO Auto-generated method stub StringBuffer sb = new StringBuffer(); sb.append("<areas>"); for (int i = 0; i < list.size(); i++) { @SuppressWarnings("rawtypes") Class cl = list.get(i).getClass(); Field[] f = cl.getDeclaredFields(); sb.append("<area"); sb.append(" id=""+ cl.getMethod("getAreaCode",new Class[] {}) .invoke(list.get(i),new Class[] {}) + "">"); for (int j = 0; j < f.length; j++) { if ("areaCode".equals(f[j].getName())) { continue; } f[j].setAccessible(true); sb.append("<" + f[j].getName() + ">"); sb.append(f[j].get(list.get(i))); sb.append("</" + f[j].getName() + ">"); f[j].setAccessible(false); } sb.append("</area>"); } sb.append("</areas>"); return sb.toString(); } }Area.java 类 package priv.yingmm.entity; /** * @Description: 区域类 * @ClassName: Area * @author yingmm * @date 2015-5-2 下午08:05:53 * */ public class Area { private String areaCode; private String areaName; private int personNum; // private String city; public Area() { super(); } public Area(String areaCode,String areaName,int personNum) { super(); this.areaCode = areaCode; this.areaName = areaName; this.personNum = personNum; } public String getAreaCode() { return areaCode; } public void setAreaCode(String areaCode) { this.areaCode = areaCode; } public String getAreaName() { return areaName; } public void setAreaName(String areaName) { this.areaName = areaName; } public int getPersonNum() { return personNum; } public void setPersonNum(int personNum) { this.personNum = personNum; } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |