• Java解析xml配置文件合成器


    这里是我自己写的一个简单的文件合成器,把n多文件路径配置在xml中,Java解析后读出来写到第一个文件中去。

    xml配置文件如下:

    path.xml

    <?xml version="1.0" encoding="gbk"?>
    <files>
     <file path="d:\123.txt"></file>
     <file path="d:\124.txt"></file>
     <file path="d:\125.txt"></file>
    </files>

    解析的Java代码如下:

     ReadAll.java

    package javaIOTest;

    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.util.HashMap;
    import java.util.Iterator;

    import org.dom4j.Attribute;
    import org.dom4j.Document;
    import org.dom4j.DocumentException;
    import org.dom4j.Element;
    import org.dom4j.io.SAXReader;

    public class ReadAll {

     private ReadAll(String xmlFile) {
      dispose(xmlFile);
     }

     public HashMap<String, String> iterateWholeXML(String filename) {
      SAXReader saxReader = new SAXReader();
      HashMap<String, String> hm = new HashMap<String, String>();
      try {
       Document document = saxReader.read(new File(filename));
       Element root = document.getRootElement();
       int num = -1;
       System.out.println("开始解析......");
       for (Iterator iter = root.elementIterator(); iter.hasNext();) {
        Element element = (Element) iter.next();
        num++;
        Attribute pathAttr = element.attribute("path");
        if (pathAttr != null) {
         String path = pathAttr.getValue();
         if (path != null && !path.equals("")) {
          hm.put(pathAttr.getName() + num, path);
         } else {
          hm.put(pathAttr.getName() + num, "\123");
         }
        }
       }
     
       return hm;
      } catch (DocumentException e) {
       e.printStackTrace();
      }
      return hm;
     }

     private void dispose(String xmlFile) {
      readFile(iterateWholeXML(xmlFile));
     }

     public void readFile(HashMap<String, String> fileMap) {
      FileReader fr = null;
      FileWriter fw = null;
      BufferedWriter bw = null;
      BufferedReader br = null;
      String str=null;
      try {
          
                File file0 = null;
                StringBuffer sb = new StringBuffer();
                System.out.println("开始读取......");
       for (String ss : fileMap.keySet()) {
        
        System.out.println("正在合并......"); 
        System.out.println(ss + ":" + fileMap.get(ss));   
       if("path0".equals(ss)){
        file0 = new File(fileMap.get(ss));
        continue;
       }
               
                File file = new File(fileMap.get(ss));
       fr = new FileReader(file);
       br = new BufferedReader(fr);
       do{
          str = br.readLine();
       sb.append(str);
       sb.append(" ");
       }while(br.readLine()==null);
       sb.append(" ");
       }
       fw = new FileWriter(file0, true);
       bw = new BufferedWriter(fw);
       bw.write(sb.toString());
       bw.flush();
       
       
       System.out.println("合并结束......");

      } catch (Exception e) {
       e.printStackTrace();
      } finally {
       try {
        fr.close();
       } catch (IOException e) {
        e.printStackTrace();
       }
       try {
        fw.close();
       } catch (IOException e) {
        e.printStackTrace();
       }

      }
     }

     public static void main(String[] args) {
      new ReadAll("d:\path.xml");
     }

    }

    在执行的时候确保你的配置文件的路径和main方法中的路径一致。

  • 相关阅读:
    CODING x 百果园 _ 水果零售龙头迈出 DevOps 体系建设第一步
    Nocalhost 亮相 CD Foundation 国内首届 Meetup,Keith Chan 将出席致辞
    做云原生时代标准化工具,实现高效云上研发工作流
    打造数字化软件工厂 —— 一站式 DevOps 平台全景解读
    WePack —— 助力企业渐进式 DevOps 转型
    CODING Compass —— 打造行云流水般的软件工厂
    Nocalhost —— 让云原生开发回归原始而又简单
    CODING 代码资产安全系列之 —— 构建全链路安全能力,守护代码资产安全
    Nocalhost:云原生开发新体验
    使用 Nocalhost 开发 Kubernetes 中的 APISIX Ingress Controller
  • 原文地址:https://www.cnblogs.com/alaricblog/p/3278564.html
Copyright © 2020-2023  润新知