将多个txt文档转换成对应的xml文档

做项目的时候,需要将txt文件转换成xml文件,就做了一下记录,本文的一个逻辑主要在于,它根据每分钟创建一个xml文件、每天创建一个xml文件、根据txt文档的一个属性来判断txt属于什么类型来创建对应的xml,及不管是每分钟还是每天创建的,都存放到一个总的文件夹中。


import java.io.BufferedReader;

import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.io.Writer;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;


import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
import org.jdp.common.util.StringUtils;


public class TxtToXml2 {


@SuppressWarnings("resource")
    public static void txtToXML(String txtPath) throws IOException
    {
        File file = new File(txtPath);
         
        Document document = DocumentHelper.createDocument();
         
        Element list = document.addElement("list");
         
        BufferedReader br = new BufferedReader(new FileReader(file));
         
        String line = br.readLine();
         
        List<String> type=new ArrayList<String>();//判断类型生成的xml放到对应的类型文件夹中
        String str="";
        while(line!=null)
        {
            String temp[]  = line.split(" ");
            Element log = list.addElement("log");
            Element time = log.addElement("time");
            Element ip = log.addElement("ip");
            Element httpType = log.addElement("httpType");
            Element url = log.addElement("url");
            Element httplevel = log.addElement("httplevel");
            Element linuxVersion = log.addElement("linuxVersion");
            Element os = log.addElement("os");
            Element AndroidVersion = log.addElement("AndroidVersion");
            Element phoneType = log.addElement("phoneType");
            for(int i = 0;i<temp.length;i++)
            {
                time.setText(temp[0]);
                ip.setText(temp[1]);
                str=temp[2];
                httpType.setText(temp[2]);
                url.setText(temp[3]);
                httplevel.setText(temp[4]);
                linuxVersion.setText(temp[9]);
                os.setText(temp[10]);
                AndroidVersion.setText(temp[12]);
                phoneType.setText(temp[13]);
            }
            line = br.readLine();
            type.add(str);
        }
        System.out.println(type);
        createStyleXml(document,type);
        System.out.println(txtPath+"进来了");
    }
     

private static void createStyleXml(Document document,List<String> type) throws UnsupportedEncodingException, IOException {
        // 设置XML文档格式
        OutputFormat format = OutputFormat.createPrettyPrint();  
        // 设置XML编码方式,即是用指定的编码方式保存XML文档到字符串(String),这里也可以指定为GBK或是ISO8859-1  
        format.setEncoding("UTF-8");
        //outputFormat.setSuppressDeclaration(true); //是否生产xml头
        //设置是否缩进
        format.setIndent(true);
        //以四个空格方式实现缩进
        format.setIndent("    "); 
        //设置是否换行 
        format.setNewlines(true);


//xml写出,以下载的方式
        //XMLWriter写出
//        XMLWriter writer = null;
//        writer = new XMLWriter(getResponse().getOutputStream(), format);
//        //设置是否转义,默认值是true,代表转义
//        writer.setEscapeText(false);
//
//        //让浏览器识别是什么类型的文件
//        getResponse().reset(); // 重点突出
//        getResponse().setCharacterEncoding("UTF-8"); // 重点突出
//        getResponse().setContentType("application/x-msdownload");// 不同类型的文件对应不同的MIME类型 // 重点突出
//        // inline在浏览器中直接显示,不提示用户下载
//        // attachment弹出对话框,提示用户进行下载保存本地
//        // 默认为inline方式
//        getResponse().setHeader("Content-Disposition", "attachment;filename="+ UUID.randomUUID()+".xml");


//        writer.write(document);
//        writer.close();
//xml写出,写到本地
        Date date=new Date();
        SimpleDateFormat sim=new SimpleDateFormat("yyyyMMddHHmmss");
        String time = sim.format(date);
        String minute= (String) time.subSequence(0, 12);//每分钟--获取分钟  minute   
        String day= (String) time.subSequence(0, 8);//每天---获取天数 day
        File createMinuteFile=new File("D:\\log\\"+minute);
        //文件夹不存在就创建文件夹--对应的是每分钟--即当前文件夹
        if(!createMinuteFile.exists()) {
        createMinuteFile.mkdir();
        }
        File createDayFile=new File("D:\\log\\"+day);
        //判断当天的文件夹是否存在,不存在就创建
        if(!createDayFile.exists()) {
        createDayFile.mkdir();
        }
        
        //url区
        String name=time+".xml";
        String url;
        String urlDay;
        String urlType = null;
        String urlAll = null;
        //循环type集合
        File createTypeFile=null;
        for (String ty : type) {
        createTypeFile=new File("D:\\log\\"+ty);
        //类型存放
            if(!createTypeFile.exists()) {
            createTypeFile.mkdir();
            }
            //判断当为GET类型的时候,要存到对应的GET文件夹中,要存到ALL文件夹中,要存到对应的当日中
            if(ty.equals("GET")) {
            urlType="D:\\log\\"+"GET"+"\\"+name;
            //存在对应的GET类型的文件夹中
            if(StringUtils.isNotEmpty(urlType)) {
                    Writer filewriterType = new FileWriter(urlType);
                   XMLWriter xmlWriter = new XMLWriter(filewriterType,format);
                   xmlWriter.write(document);
                   xmlWriter.close();
                }
            //存到对应的ALL文件夹中
            //全部存放
                    File createAllFile=new File("D:\\log\\All\\"+ty+"\\");
                    if(!createAllFile.exists()) {
                    createAllFile.mkdir();
                    }
                    urlAll="D:\\log\\All\\"+ty+"\\"+name;
                    if(StringUtils.isNotEmpty(urlAll)) {
                    Writer filewriterAall = new FileWriter(urlAll);
                   XMLWriter xmlWriter = new XMLWriter(filewriterAall,format);
                   xmlWriter.write(document);
                   xmlWriter.close();
                   System.out.println("All下载成功");
                    }
            }
            if(ty.equals("POST")) {
            urlType="D:\\log\\"+"POST"+"\\"+name;
            //存在对应的GET类型的文件夹中
            if(StringUtils.isNotEmpty(urlType)) {
                    Writer filewriterType = new FileWriter(urlType);
                   XMLWriter xmlWriter = new XMLWriter(filewriterType,format);
                   xmlWriter.write(document);
                   xmlWriter.close();
                }
            //存到对应的ALL文件夹中
            //全部存放
                    File createAllFile=new File("D:\\log\\All\\"+ty+"\\");
                    if(!createAllFile.exists()) {
                    createAllFile.mkdir();
                    }
                    urlAll="D:\\log\\All\\"+ty+"\\"+name;
                    if(StringUtils.isNotEmpty(urlAll)) {
                    Writer filewriterAall = new FileWriter(urlAll);
                   XMLWriter xmlWriter = new XMLWriter(filewriterAall,format);
                   xmlWriter.write(document);
                   xmlWriter.close();
                   System.out.println("All下载成功");
                    }
            }
           
            }
            
        
        //当前文件夹--每分钟创建的xml都存放的当前每分钟创建的文件夹中
        if(name.indexOf(minute)>=0) {
        url="D:\\log\\"+minute+"\\"+name;
        }
        url="D:\\log\\"+minute+"\\"+name;
        
        //对应的是当日文件夹
        if(name.indexOf(day)>=0) {
        urlDay ="D:\\log\\"+day+"\\"+name;
        }
        urlDay="D:\\log\\"+day+"\\"+name;
        //下载生成
        if(StringUtils.isNotEmpty(url)) {
        Writer filewriter = new FileWriter(url);
       XMLWriter xmlWriter = new XMLWriter(filewriter,format);
       xmlWriter.write(document);
       xmlWriter.close();
        }
        if(StringUtils.isNotEmpty(urlDay)) {
        Writer filewriterDay = new FileWriter(urlDay);
         XMLWriter xmlWriterDay = new XMLWriter(filewriterDay,format);
         xmlWriterDay.write(document);
         xmlWriterDay.close();
        }
       
       
   System.out.println("导出成功");
    }
    public static void main(String args[]) throws IOException
    {

    //在D:\\log\\下有多个文件,多去多个文件

String st="D:\\log\\";

    String[] strArr={st+"test.txt",st+"test3.txt",st+"test2.txt"};
    for (String string : strArr) {
    TxtToXml.txtToXML(string);
}
   
    }

}
你可以使用readFileToXML模块中的readFileToXML类来将txt文件转换为xml文件。首先,你需要在Linux上运行脚本,所以你需要修改调用方式。在代码中,你可以看到通过sys.argv获取命令行输入的文件路径,如果没有输入参数,则提示用户输入文件路径。然后,你可以实例化readFileToXML类,并传入文件路径作为参数。最后,调用makeXML方法将txt文件转换为xml文件。\[1\] 如果你想调试代码,你可以使用调试代码部分中的代码。你可以实例化readFileToXML类,并传入文件路径作为参数。然后,你可以调用makeXML方法将txt文件转换为xml文件。你还可以打印JSON格式和XML格式的数据,以及路径和文件名。\[2\] 对于转换的具体格式,你可以参考引用\[3\]中给出的示例。每个txt文件中的数据表示一个类别,包括xmin、ymin、w和h。你需要将这些数据转换为对应xml格式。 #### 引用[.reference_title] - *1* *2* [使用Python将TXT文本内容读取后生成指定XML格式的文件](https://blog.csdn.net/weixin_34104341/article/details/91746431)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [python 批量txtxml](https://blog.csdn.net/m0_46529214/article/details/124495369)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值