文档章节

JAXB方式读写XML文件

thankyoulife
 thankyoulife
发布于 2014/08/13 14:50
字数 323
阅读 1594
收藏 5
import java.io.File;
import java.util.ArrayList;
import java.util.List;

import javax.xml.bind.JAXB;

import org.apache.log4j.Logger;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import cn.com.starit.ts.nms.collect.pon.snmp.beans.ConfigInfo;


public class ConfigXml {
    
    private static Logger logger = Logger.getLogger(ConfigXml.class);

    String filePath="";

    public ConfigXml() {

    }
    
    public ConfigXml(String filePath){
        this.filePath=filePath;
    }

    /**
     * JAXB方式读XML文件
     * @param file
     * @param clazz
     * @return
     */
    public Object getConfigXmlByJAXB(File file,Class<?> clazz){
        return JAXB.unmarshal(file,clazz);        
    }
    
    /**
     * JAXB方式写XML文件
     * @param clazz
     * @param file
     */
    public void setConfigXmlByJAXB(Object obj,File file){
        JAXB.marshal(obj,file);
    } 
    
    /**
     * load 载入一个xml文档
     * @return 成功返回Document对象,失败返回null
     * @param 文件路径
     */
    public Document load(String filename) {
        Document document = null;
        try {
            SAXReader saxReader = new SAXReader();
            document = saxReader.read(new File(filename));
        } catch (Exception ex) {
            logger.error("解析配置文件失败:" + ex.getMessage());
        }
        return document;
    }

    //*地址改成配置的
    @SuppressWarnings("unchecked")
    public List<Element> getProcessList() {

        String home = System.getenv("TSPON_HOME"); //环境变量
        if (home == null) {
            home = "D:/SNMP";
        }
        filePath= home + "/collect/config/snmp_config.xml";
        Document doc = load(filePath);
        
        List<Element> process_list = new ArrayList<Element>();
        if (doc == null) {
            return process_list;
        }
        Element define = doc.getRootElement().element("process_list");
        List<Element> defineNodes = define.elements("process");
        return defineNodes;
    }

    public ConfigInfo getCollWayConfig(){
        String home = System.getenv("TSPON_HOME");
        if (home == null) {
            home = "D:/SNMP";
        }
        String collWayFile = home + "/collect/config/snmp_collecter.xml";
        return(ConfigInfo) getConfigXmlByJAXB(new File(collWayFile),ConfigInfo.class);//把一个xml文件与一个javabean对象结合起来
    }
    
    public static void main(String[] a) {
//        ConfigXml xml=new ConfigXml("d:\\snmp_collect_config.xml");
//        xml.getProcessList();
        ConfigXml xml = new ConfigXml();
        ConfigInfo config = new ConfigInfo();
        //写
        List<ConfigInfo> list = new ArrayList<ConfigInfo>();
        for(int i=1;i<5;i++){
            ConfigInfo configFactory = new ConfigInfo();
            configFactory.setFactoryId(i);
            configFactory.setCollType(1);
            configFactory.setOltCollMode(1);
            configFactory.setOnuCollMode(1);
            configFactory.setSendLength(5);
            list.add(configFactory);
        }
        config.setConfig(list);
        xml.setConfigXmlByJAXB(config,new File("d:/a.xml"));
        //读
        config = (ConfigInfo)xml.getConfigXmlByJAXB(new File("d:/a.xml"),ConfigInfo.class);
        for(ConfigInfo con:config.getConfig()){
            System.out.println(con.getOltCollMode());
        }
    }
        
}


© 著作权归作者所有

thankyoulife
粉丝 1
博文 17
码字总数 7361
作品 0
合肥
后端工程师
私信 提问
基于JAX-WS调用Web Service的Java客户端

基于JAX-WS调用Web Service的Java客户端一般采用两种方式:proxy方式以及dispatch方式。 proxy方式,proxy的步骤主要如下图所示: 一,proxy方式的调用代码片段一般如下: 1,用工具通过WSDL文...

晨曦之光
2012/04/25
5.3K
0
dom4j的使用及常见问题

相信作为一个开发人员应该对XML与JSON 非常熟悉。关于两者的介绍与区别网上已经有很多资料,java对于XML的解析也有很多工具包,主要解析的方式有三种: 1.DOM解析方式:适用于解析小型XML文件...

Half_candy
2015/09/20
380
0
使用 JAXB 框架定制 Web 服务行为

Web 服务概述 从本质上来讲 Web 服务就是对外暴露的并能够通过 Web 进行调用的一组 API,它并不要求服务提供方及调用方的技术实现、编程语言、运行平台甚至操作系统等。也正因为这个特点 We...

红薯
2010/03/24
1K
1
jaxb替换smooks项目方案建议书

1 前言 本文档是描述Smooks的应用情况,以及使用Jaxb替换smooks的可行性分析及实施方案,有不足之处还望谅解和指出。 2 背景 项目系统中使用Smooks出现几次死锁问题导致系统宕机,其后针对S...

WinnieChan
2013/08/02
1K
1
JaxbContext生成xml文件或java类对象转化注解

JAXB(Java API for XML Binding),提供了一个快速便捷的方式将Java对象与XML进行转换。在JAX-WS(Java的WebService规范之一)中,JDK1.6 自带的版本JAX-WS2.1,其底层支持就是JAXB。 JAXB...

K_ONE
2016/02/16
170
0

没有更多内容

加载失败,请刷新页面

加载更多

前端面试题汇总

一. HTML常见的兼容性 1.HTML5 标签在低版本浏览器不兼容 解决办法:使用html5shiv库,引入下列语句 <!--[if lte IE 8]> <script src="https://cdn.bootcss.com/html5shiv/r29/html5.js"></sc......

蓝小驴
20分钟前
3
0
OSChina 周四乱弹 —— 我气的脸都黑了!

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 小小编辑推荐《Red Battle》- 高橋李依 / 豊崎愛生 《Red Battle》- 高橋李依 / 豊崎愛生 手机党少年们想听歌,请使劲儿戳(这里) @丶Lion ...

小小编辑
33分钟前
387
19
找OSG教程, B站就有

https://www.bilibili.com/video/av64849038?from=search&seid=11632913960900279653

洛克人杰洛
55分钟前
4
0
学习记录(day07-Vue组件、自定义属性、自定义事件)

[TOC] 1.1.1什么是组件 一个vue文件就是一个组件 组件将html标签/css样式/对应JS打包成一个整体,也可以理解钻进一个具有样式和特效的自定义标签。 一、编写组件(提供方)<template> <di...

庭前云落
今天
4
0
使用Prometheus监控SpringBoot应用

通过之前的文章我们使用Prometheus监控了应用服务器node_exporter,数据库mysqld_exporter,今天我们来监控一下你的应用。(本文以SpringBoot 2.1.9.RELEASE 作为监控目标) 编码 添加依赖 使...

JAVA日知录
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部