JAXB方式读写XML文件

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());
        }
    }
        
}

JAXB方式读写XML文件

时间: 2024-10-08 19:35:14

JAXB方式读写XML文件的相关文章

PHP读写XML文件的四种方法

PHP对XML文件进行读写操作的方法一共有四种,分别是:字符串方式直接读写.DOMDocument读写. XMLWrite写和XMLReader读.SimpleXML读写,本文将依次对这四种方法进行介绍. 介绍之前首先对本文例子使用的数据和文件进行说明.本文写XML文件的例子都是从MySQL中读取数据然后 写入到XML文件中,读XML文件的例子都是从XML文件中读取数据后组装成数组的格式,数组中每个元素对应数 据库中的一条记录. MySQL中的数据: XML文件: 1 2 3 4 5 6 7 8

PHP读写XML文件(一)

PHP读写XML文件的方法有四种,从本文开始将连续使用四篇博文来分别介绍这四种方法.本文介绍的是第一种方法: 使用字符串操作的方式来对XML文件进行读写操作. 一.PHP字符串方式写XML文件: 首先介绍PHP使用字符串方式写XML文件.本例将读取数据库中的数据,输出为XML文件. 数据库数据如下: 读取数据并写入XML文件代码: <?php /** * function:使用字符串方式写XML文件 * author:JetWu * date:2016.12.03 **/ $mysqli = m

C#读写xml文件的常用方法

已知有一个XML文件(bookshop.xml)如下: <?xml version="1.0" encoding="gb2312" ?> <bookshop> <book genre="fantasy" ISBN="2-2312-2"> <title>Oberon Legacy</title> <author>Eva</author> <

ASP.NET读写XML文件

本文中的方式主要是用序列化与反序列化的方式来实现读写xml文件,注意,不是特指的web.config文件,是指自定义的config文件. 下面的是一个xml读写操作类,包含读方法用到了反序列化方式,还有写方式,用到了序列化方式. using System; using System.IO; using System.Web; using System.Xml.Serialization; namespace WX_Tools { /// <summary> /// Xml文件读写类 /// &

C# 读写XML文件最简单方法

C#史上最简单读写xml文件方式,创建控制台应用程序赋值代码,就可以运行,需要改动,请自行调整 using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Xml; namespace ConsoleApp1 { class Program { public cons

使用dom4j 读写xml文件

dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的.dom4j是一个十分优秀的JavaXML API,具有性能优异.功能强大和极其易使用的特点,同时它也是一个开放源代码的软件. String fileName="D:\\version.xml"; File inputXML=new File(fileName); //使用 SAXReader 解析 XML 文档 version.xml SAXReader saxReader=new SAXReader();

C#读写xml文件

c#读写xml文件已知有一个XML文件(bookstore.xml)如下: Code<?xml version="1.0" encoding="gb2312"?><bookstore> <book genre="fantasy" ISBN="2-3631-4"> <title>Oberon's Legacy</title> <author>Corets,

iOS 读写xml文件

//*********写入文件,传入要保存的信息*********//保存xml -(void) saveXml:(NSString *)data { //创建文件管理器 NSFileManager *fileManager = [NSFileManager defaultManager ]; //获取路径 //参数NSDocumentDirectory要获取那种路径 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentD

Java之Pull方式生成xml文件和解析xml文件

Pull XML解析器早已经被google集成到android sdk当中,它是google官方推荐的解析器. 如果我们要在Java桌面.J2ME等当中使用Pull方式生成xml文件和解析xml文件,需要用到kxml2: KXML解析器是基于普通XML PULL解析器的一个小巧的解析器,官网是http://kxml.org/ 普通XML PULL解析器的官网是http://xmlpull.org/ 实验开始: 在Eclipse中新建一个java项目,其中新建一个libs文件夹,拷贝从网上下载的k