ZKe

-------------------

XML数据的一个块内的所有属性,转换成TXT文件的一行。众所周知XML文件是通过类似HTML的标签进行数据的定义如图所示

  属性由id, article, discuss, insertTime, oigin, person_id, time, transmit,整个数据由RECORD标签括住。

  这是一个典型的括号匹配问题,可以定义一个信号量标记数据的开始与结束,另外可以声明一个String类型的变量作为数据缓冲区,遇到</RECORD>标签就将改变量的值写入新文件,遇到<RECORD>便清空改变量。遇到任一属性字段的标签,便写入缓冲变量。

处理方法:

  private String oneLine = null;
private boolean canPrint = false; private void process(String line){ if(line.startsWith("<RECORD>")){
oneLine = "";
canPrint = false;
return;
}else if(line.startsWith("<RECORDS>")){
return;
}else if(line.startsWith("</RECORD>")){
canPrint = true;
return;
}else if(line.startsWith("</RECORDS>")){
return;
}
line = line.trim();
if(line.trim().startsWith("<id>")){
oneLine += line.substring(4, line.length()-5);
oneLine += " | ";
}
else if(line.trim().startsWith("<article>")){
if(line.indexOf("</article>")==-1){
oneLine+= line.substring(9);
return;
}
oneLine += line.substring(9, line.length()-10);
oneLine += " | ";
}else if(line.trim().startsWith("<discuss>")){
oneLine += line.substring(9, line.length()-10);
oneLine += " | ";
}else if(line.trim().startsWith("<insertTime>")){
oneLine += line.substring(12, line.length()-13);
oneLine += " | ";
}else if(line.trim().startsWith("<origin>")){
oneLine += line.substring(8, line.length()-9);
oneLine += " | ";
}else if(line.trim().startsWith("<person_id>")){
oneLine += line.substring(11, line.length()-12);
oneLine += " | ";
}else if(line.trim().startsWith("<time>")){
oneLine += line.substring(6, line.length()-7);
oneLine += " | ";
}else if(line.trim().startsWith("<transmit>")){
oneLine += line.substring(10, line.length()-11);
}else if(line.indexOf("</article>")!=-1){
oneLine += line.substring(0, line.length()-10);
}
}

XML数据的读取使用BufferedReader,写入TXT使用BufferedWriter,注意其中信号量的控制

public void printToTXTFile(){
File file =new File(this.path);
File targetFile = new File("/root/myCodes/finalClassDesign/stardardAllData.txt");
try {
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr); FileWriter fw = new FileWriter(targetFile);
BufferedWriter bw = new BufferedWriter(fw); String line = "";
while((line = br.readLine())!= null){ process(line);
if(canPrint){
bw.write(oneLine);
bw.newLine();
// System.out.println(oneLine);
}
} bw.flush();
bw.close();
fw.close();
br.close();
fr.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

其他部分就是类里面的其他属性了,比如源文件路径,目标文件路径,函数调用了,省略自己补充

转换后的TXT文件内容如下,效果挺好,我是用"|"作为分割,其实有弊端,因为"|"在正则表达式里面被视作通配符,大家改成逗号","或者分号";"甚至斜杠"|"什么的即可

XML转换成TXT行数据的Java程序的更多相关文章

  1. java将XML文档转换成json格式数据

    功能 将xml文档转换成json格式数据 说明 依赖包:1. jdom-2.0.2.jar : xml解析工具包;2. fastjson-1.1.36.jar : 阿里巴巴研发的高性能json工具包 ...

  2. Dom4j把xml转换成Map(非固定格式)

    将xml转换成Map,能够应对不用结构的xml,而不是只针对固定格式的xml.转换规则:1.主要是Map与List的互相嵌套2.同名称的节点会被装进List 示例: import java.util. ...

  3. 如何在ASP.NET中用C#将XML转换成JSON

    本文旨在介绍如果通过C#将获取到的XML文档转换成对应的JSON格式字符串,然后将其输出到页面前端,以供JavaScript代码解析使用.或许你可以直接利用JavaScript代码通过Ajax的方式来 ...

  4. 如何在ASP.NET中用C#将XML转换成JSON 【转】

      本文旨在介绍如果通过C#将获取到的XML文档转换成对应的JSON格式字符串,然后将其输出到页面前端,以供JavaScript代码解析使用.或许你可以直接利用JavaScript代码通过Ajax的方 ...

  5. C#将XML转换成JSON转换XML

    原文:C#将XML转换成JSON转换XML using System; using System.Collections.Generic; using System.Linq; using Syste ...

  6. xml转换成map

    import java.io.IOException;import java.io.StringReader;import java.util.ArrayList;import java.util.H ...

  7. jQuery、JS读取xml文件里的内容(JS先通过document.implementation.createDocument方法将xml转换成document对象,jQuery将读取到的xml转成table)

    xml文件:test.xml <?xml version="1.0"?> <note> <to>George</to> <fr ...

  8. Dom4j把xml转换成Map(固定格式)

    /** * 可解析list * * @param fileName * @return * @throws Exception */ @SuppressWarnings("unchecked ...

  9. Python 将pdf转换成txt(不处理图片)

    上一篇文章中已经介绍了简单的python爬网页下载文档,但下载后的文档多为doc或pdf,对于数据处理仍然有很多限制,所以将doc/pdf转换成txt显得尤为重要.查找了很多资料,在linux下要将d ...

随机推荐

  1. python基础-面向对象opp

    上述是实例化对象的一个过程. 类的定义和实例化: class Role(object): #定义一个类, class是定义类的语法,Role是类名,(object)是新式类的写法,必须这样写,以后再讲 ...

  2. 【题解】CF1290B Irreducible Anagrams

    Link 题目大意:对于一个字符串,每次询问一个区间,看看这个区间是不是可以划分为若干区间,这些区间内数字经过排列后可以还原原来区间. \(\text{Solution:}\) 菜鸡笔者字符串构造该好 ...

  3. excel——VlookUp函数的使用

    VlookUp函数,查询两个表中的相同字段数据,并将需要引用的数据从B表填充到A表 1.打开A表,将需要查询的列选中 在需要引用的列输入 = 在上方,函数选择中选择VLOOKUP函数 Windows: ...

  4. 透视HTTPS建造固若金汤的城堡

    为什么有 HTTPS?因为 HTTP 不安全! 现在的互联网已经不再是 "田园时代","黑暗森林" 已经到来.上网的记录会被轻易截获,网站是否真实也无法验证,黑 ...

  5. 持续集成工具之Jenkins使用配置

    在上一篇博客中,我们主要介绍了DevOps理念以及java环境和jenkins的安装,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13805666.html: ...

  6. 1.Linux内核模块编程

    1.模块加载程序结构 - 模块加载函数: static int _init init_function(void); module_init(init_function); - 模块卸载函数: sta ...

  7. IDEA设置maven修改settings.xml配置文件无法加载仓库

    作为初学者配置maven一般网上搜索.然后你就看到各种配置文件片段,首先配置镜像,然后配置仓库.完事后再IDEA里面配置下maven的路径和配置文件路径. 这些文章属实坑爹,完全没讲一个重要的配置就是 ...

  8. 发布MeteoInfo 1.2.6

    增加了对AWX卫星数据格式的支持(和C#版本的功能相当).在MeteoInfo中打开AWX数据: 在MeteoInfoLab中打开AWX数据:

  9. go-zero 如何应对海量定时/延迟任务?

    一个系统中存在着大量的调度任务,同时调度任务存在时间的滞后性,而大量的调度任务如果每一个都使用自己的调度器来管理任务的生命周期的话,浪费cpu的资源而且很低效. 本文来介绍 go-zero 中 延迟操 ...

  10. kafka-伪集群搭建

      一.简介 Apache Kafka是一个快速.可扩展的.高吞吐的.可容错的分布式"发布-订阅"消息系统,使用Scala与Java语言编写,能够将消息从一个端点传递到另一个端点, ...