博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java对象与xml相互转换工具类
阅读量:4949 次
发布时间:2019-06-11

本文共 3664 字,大约阅读时间需要 12 分钟。

public class XmlHelper {    /**     * Object转XML     *     * @param object     * @return     * @throws Exception     */    public static String ObjectToXml(Object object) throws Exception {        JAXBContext context = JAXBContext.newInstance(object.getClass());    // 获取上下文对象        Marshaller marshaller = context.createMarshaller(); // 根据上下文获取marshaller对象        marshaller.setProperty(Marshaller.JAXB_ENCODING, "GB2312");  // 设置编码字符集        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); // 格式化XML输出,有分行和缩进        ByteArrayOutputStream baos = new ByteArrayOutputStream();        marshaller.marshal(object, baos);        String xmlObj = new String(baos.toByteArray());         // 生成XML字符串        return xmlObj.trim();    }    /**     * Object转XML     *     * @param object     * @return     * @throws Exception     */    public static String ObjectToXmlUtf8(Object object) throws Exception {        JAXBContext context = JAXBContext.newInstance(object.getClass());    // 获取上下文对象        Marshaller marshaller = context.createMarshaller(); // 根据上下文获取marshaller对象        marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");  // 设置编码字符集        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); // 格式化XML输出,有分行和缩进        ByteArrayOutputStream baos = new ByteArrayOutputStream();        marshaller.marshal(object, baos);        String xmlObj = new String(baos.toByteArray());         // 生成XML字符串        return xmlObj.trim();    }    /**     * XML转Object     *     * @param xmlStr     * @param classz     * @return     */    public static Object XmlToObject(String xmlStr, Class classz) {        try {            JAXBContext context = JAXBContext.newInstance(classz);            Unmarshaller unmarshaller = context.createUnmarshaller();            Object object = unmarshaller.unmarshal(new StringReader(xmlStr));            return object;        } catch (JAXBException ex) {            ex.printStackTrace();            return null;        }    }    /**     * xml格式字符串获取所有子节点存入list,每个List分两个部分:name和value,中间用“:”隔开     *     * @param srcXml     * @return     */    public static List
getListXML(String srcXml) { //存储xml元素信息的容器 List
elemList = new ArrayList
(); List
list = new ArrayList
(); Document srcdoc = null; try { srcdoc = DocumentHelper.parseText(srcXml); } catch (DocumentException e) { e.printStackTrace(); } Element elem = srcdoc.getRootElement(); getElementList(elem, elemList); for (Iterator
it = elemList.iterator(); it.hasNext(); ) { Leaf leaf = it.next(); list.add(leaf.getName() + ":" + leaf.getValue()); } return list; } /** * 递归遍历方法 * * @param element */ public static void getElementList(Element element, List
elemList) { List elements = element.elements(); if (elements.size() == 0) { //没有子元素 //String xpath = element.getPath(); String xpath = element.getName(); String value = element.getTextTrim(); Leaf leaf = new Leaf(xpath, value); elemList.add(leaf); } else { //有子元素 for (Iterator it = elements.iterator(); it.hasNext(); ) { Element elem = (Element) it.next(); //递归遍历 getElementList(elem, elemList); } } } static class Leaf { private String name; private String value; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getValue() { return value; } public void setValue(String value) { this.value = value; } public Leaf(String name, String value) { this.name = name; this.value = value; } }}

转载于:https://www.cnblogs.com/black-spike/p/10174630.html

你可能感兴趣的文章
错误org/aopalliance/intercept/MethodInterceptor解决方法
查看>>
Pylint在项目中的使用
查看>>
使用nginx做反向代理和负载均衡效果图
查看>>
access remote libvirtd
查看>>
gdb调试中出现No symbol table is loaded. Use the "file" command.问题
查看>>
(4) Orchard 开发之 Page 的信息存在哪?
查看>>
ASP.NET中 GridView(网格视图)的使用前台绑定
查看>>
图像加载
查看>>
关于zxing生成二维码,在微信长按识别不了问题
查看>>
Haskell学习-高阶函数
查看>>
手动通知扫描SD卡主动生成缩略图
查看>>
js中tagName和nodeName
查看>>
PC-XP系统忘记密码怎么办
查看>>
Android实例-打电话、发短信和邮件,取得手机IMEI号(XE8+小米2)
查看>>
深入了解Oracle ASM(二):ASM File number 1 文件目录
查看>>
SQL数据库学习系列之一
查看>>
Boosting(提升方法)之AdaBoost
查看>>
CUDA学习1 在Visual Studio和CodeBlocks上配置
查看>>
JavaScript(6)——事件1.0
查看>>
2013 ACM-ICPC China Nanjing Invitational Programming Contest 总结
查看>>