首页

通过xml配置数据映射mapping给java对象属性赋值用做系统初始化配置(源码示例)

标签:SAXReader,解析,xml,映射,mapping,示例,dom4j-1.6.1.jar     发布时间:2016-09-03   

一、示例简介

本代码示例主要通过将新闻对象的初始化映射为配置文件news_cfg.xml的属性配置,通过dom4j(dom4j-1.6.1.jar)完成xml的解读,具体代码如下

package xwood.mapping;@b@@b@import java.io.InputStream;@b@import java.lang.reflect.Field;@b@import java.util.ArrayList;@b@import java.util.List;@b@@b@import org.dom4j.Document;@b@import org.dom4j.Element;@b@import org.dom4j.io.SAXReader;@b@@b@public class XmlCfgObjMappingTest {@b@     @b@    @SuppressWarnings("unused")@b@    private static Document loadXmlDoc() throws Exception{@b@        InputStream in = XmlCfgObjMappingTest.class.getResourceAsStream("/xwood/mapping/news_cfg.xml");@b@        SAXReader reader = new SAXReader();@b@        return reader.read(in);@b@    }@b@    @b@    @SuppressWarnings("unchecked")@b@    private static News setNewsObj(Element newNode) throws Exception{@b@        Class<News> new_cls = News.class;@b@        News new_obj = new_cls.newInstance();@b@        //获取new元素属性节点@b@        List<Element> n_new_properties = newNode.elements();@b@        for(Element p : n_new_properties){@b@            String p_name = p.getName();@b@            //获取news所有属性@b@            Field field = new_cls.getDeclaredField(p_name);@b@            //开放private protected访问权限@b@            field.setAccessible(true);@b@            Class<?> type = field.getType();@b@            Object p_value = p.getTextTrim();@b@            if(type==int.class){@b@                p_value = Integer.parseInt(p_value.toString());@b@            }else if(type==boolean.class){@b@                p_value = Boolean.parseBoolean(p_value.toString());@b@            }@b@            field.set(new_obj, p_value);// 动态设置值@b@        }@b@        return new_obj;@b@    }@b@    @b@    @b@    @SuppressWarnings("unchecked")@b@    public static  List<News>  getNews() throws Exception{@b@        //加载配置xml对象mappin文件@b@        Document doc=loadXmlDoc();@b@        //获取根节点,并找到new元素节点@b@        List<Element> n_news = doc.getRootElement().elements("new");@b@        List<News> newlist=new ArrayList<News>();@b@        for(Element n_new : n_news){@b@            newlist.add(setNewsObj(n_new));@b@        }@b@        return newlist;@b@    }@b@@b@    public static void main(String[] args) throws Exception {@b@        List<News> news=getNews();@b@        for(News n:news){@b@            System.out.println(n.toString());@b@        }@b@    }@b@@b@}

News类

package xwood.mapping;@b@@b@public class News {@b@    @b@    private String title;@b@    private String location;@b@    private String kwords;@b@    @b@    public String getTitle() {@b@        return title;@b@    }@b@    public void setTitle(String title) {@b@        this.title = title;@b@    }@b@    public String getLocation() {@b@        return location;@b@    }@b@    public void setLocation(String location) {@b@        this.location = location;@b@    }@b@    public String getKwords() {@b@        return kwords;@b@    }@b@    public void setKwords(String kwords) {@b@        this.kwords = kwords;@b@    }@b@    @Override@b@    public String toString() {@b@        return super.toString()+"@title:"+title+"@location:"+location+"@kwords:"+kwords;@b@    }@b@@b@}

news_cfg.xml配置文件

<?xml version="1.0" encoding="UTF-8"?>@b@<news>@b@    <new>@b@        <!-- 标题 -->@b@        <title>Java中遍历访问类几种常用方式的实现工具类ClassUtil</title>@b@        <!-- 网址 -->@b@        <location>http://www.xwood.net/_site_domain_/_root/5870/5874/t_c262686.html</location>@b@        <!-- 关键词-->@b@        <kwords>java、知识库</kwords>@b@    </new>@b@    <new>@b@        <title>通过定义JS窗口对象获取url地址location.search部分的参数值</title>@b@        <location>http://www.xwood.net/_site_domain_/_root/5870/5874/t_c262647.html</location>@b@        <kwords>javascript、getParameter</kwords>@b@    </new>@b@</news>

二、控制台结果

xwood.mapping.News@3a56f631@title:Java中遍历访问类几种常用方式的实现工具类ClassUtil@location:http://www.xwood.net/_site_domain_/_root/5870/5874/t_c262686.html@kwords:java、知识库@b@xwood.mapping.News@233d28e3@title:通过定义JS窗口对象获取url地址location.search部分的参数值@location:http://www.xwood.net/_site_domain_/_root/5870/5874/t_c262647.html@kwords:javascript、getParameter
<<推荐下载>>
  • (1) 阿里巴巴Java开发手册8种不同版本
  • (2) Web前端开发视频教程
  • (3) 30+明星讲师PPT课件分享一线大厂架构实战经验
  • (4) java开发_架构篇_视频资源分享_v2208
  • (5) java开发_高级篇_视频资源分享_v2208
  • (6) java开发_进阶篇(中级)_视频资源分享_v2208
  • (7) java开发_入门篇_视频资源分享_v2208
  • (8) 微信小程序开发视频1+167源码+实战demo等下载
  • (9) easy-shopping电子商务java源码(附脚本和安装文档说明)下载
  • (10) java常用的72份知名实用的电子书下载
  • (11) java开发性能优化资料整理大全(8份电子文档+3份实战优化)下载
  • (12) 9个常用的算法设计资料和100以上视频课件内容下载
  • (13) vue开发必备常用手册16件下载
  • (14) 21种不同技术集群方案(es、flink、redis、nginx、zk、lvs、kafka、mysql、k8s等)参考资料下载
  • (15) 20种技术代码规范(js/java/dba/阿里/华为/oracle/mysql等)参考资料下载
  • (16) 微服务五套资料(0-1,架构设计,springcloud,nacos等)下载
  • (17) 架构师(28知识图谱+3套简历模板+6套架构实战文档等)完整资料整理下载
  • (18) 大数据18套实战基础知识+8套简历模板下载
  • (19) 并发编程全套(7套+阿里巴巴+亿级实战等)实战资料下载
  • (20) Kafka九套学习整理知识点全套(面试+笔记+代码api+命令+容备等)资料下载
  • (21) java全套9个不同方向类型的面试题(基础+核心+大厂+架构师+近万套题库等)下载
  • (22) JAVA开发常用API帮助文档大全(超52种以上技术资料,高手必备)下载
  • (23) springcloud超详细139件全套学习实战资料( 视频课件+源码demo+文档资料等)下载
  • 更多推荐>>
  • <<热门文章>>