ZKe

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

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

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

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

处理方法:

  1.   private String oneLine = null;
  2. private boolean canPrint = false;
  3.  
  4. private void process(String line){
  5.  
  6. if(line.startsWith("<RECORD>")){
  7. oneLine = "";
  8. canPrint = false;
  9. return;
  10. }else if(line.startsWith("<RECORDS>")){
  11. return;
  12. }else if(line.startsWith("</RECORD>")){
  13. canPrint = true;
  14. return;
  15. }else if(line.startsWith("</RECORDS>")){
  16. return;
  17. }
  18. line = line.trim();
  19. if(line.trim().startsWith("<id>")){
  20. oneLine += line.substring(4, line.length()-5);
  21. oneLine += " | ";
  22. }
  23. else if(line.trim().startsWith("<article>")){
  24. if(line.indexOf("</article>")==-1){
  25. oneLine+= line.substring(9);
  26. return;
  27. }
  28. oneLine += line.substring(9, line.length()-10);
  29. oneLine += " | ";
  30. }else if(line.trim().startsWith("<discuss>")){
  31. oneLine += line.substring(9, line.length()-10);
  32. oneLine += " | ";
  33. }else if(line.trim().startsWith("<insertTime>")){
  34. oneLine += line.substring(12, line.length()-13);
  35. oneLine += " | ";
  36. }else if(line.trim().startsWith("<origin>")){
  37. oneLine += line.substring(8, line.length()-9);
  38. oneLine += " | ";
  39. }else if(line.trim().startsWith("<person_id>")){
  40. oneLine += line.substring(11, line.length()-12);
  41. oneLine += " | ";
  42. }else if(line.trim().startsWith("<time>")){
  43. oneLine += line.substring(6, line.length()-7);
  44. oneLine += " | ";
  45. }else if(line.trim().startsWith("<transmit>")){
  46. oneLine += line.substring(10, line.length()-11);
  47. }else if(line.indexOf("</article>")!=-1){
  48. oneLine += line.substring(0, line.length()-10);
  49. }
  50. }

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

  1. public void printToTXTFile(){
  2. File file =new File(this.path);
  3. File targetFile = new File("/root/myCodes/finalClassDesign/stardardAllData.txt");
  4. try {
  5. FileReader fr = new FileReader(file);
  6. BufferedReader br = new BufferedReader(fr);
  7.  
  8. FileWriter fw = new FileWriter(targetFile);
  9. BufferedWriter bw = new BufferedWriter(fw);
  10.  
  11. String line = "";
  12. while((line = br.readLine())!= null){
  13.  
  14. process(line);
  15. if(canPrint){
  16. bw.write(oneLine);
  17. bw.newLine();
  18. // System.out.println(oneLine);
  19. }
  20. }
  21.  
  22. bw.flush();
  23. bw.close();
  24. fw.close();
  25. br.close();
  26. fr.close();
  27. } catch (FileNotFoundException e) {
  28. // TODO Auto-generated catch block
  29. e.printStackTrace();
  30. } catch (IOException e) {
  31. // TODO Auto-generated catch block
  32. e.printStackTrace();
  33. }
  34. }

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

转换后的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. 脚手架安装react

    //1 npm install -g create-react-app //2 create-react-app xxx //xxx项目名称 //3 cd xxx //xxx项目名称 npm star ...

  2. 霍夫曼编码(Huffman)

    题目:有一个字符串:cabcedeacacdeddaaaba,问题: (1)采用霍夫曼编码画出编码的过程,并写出各字符的编码 (2)根据求得的编码,求得各编码需要的总位数 (3)求出整个字符串总编码长 ...

  3. day31 Pyhton 面向对象的基础 三大特性

    一.内容回顾 封装 1.概念 笔记 2.__名字 在类的外部就不能用了 3.私有化的 不能被子类继承,也不能在其他任何类中调用 三个装饰器方法(装饰类中的方法) 1.不被修饰的  普通方法,会使用对象 ...

  4. 在shell中截取心仪的字符串

    file=/dir1/dir2/dir3/my.file.txt ${file#*/} 去掉左边 ${file##*/} 去掉左边最后一个 ${file%/*} 去掉右边 ${file%%/*} 去掉 ...

  5. 【C语言教程】“双向循环链表”学习总结和C语言代码实现!

    双向循环链表 定义 双向循环链表和它名字的表意一样,就是把双向链表的两头连接,使其成为了一个环状链表.只需要将表中最后一个节点的next指针指向头节点,头节点的prior指针指向尾节点,链表就能成环儿 ...

  6. 【循环矩阵乘优化DP】BZOJ 2510 弱题

    题目大意 有 \(M\) 个球,一开始每个球均有一个初始标号,标号范围为 \(1\) - \(N\) 且为整数,标号为 \(i\) 的球有 \(a_i\) 个,并保证 \(\sum a_i = M\) ...

  7. 非科班8k,靠这套知识体系收入暴涨100%!

    我是18年毕业,非科班,毕业即进入互联网行业.坐标深圳,java程序员,当时到手薪资8k左右. bat等大厂月薪薪资动辄20k,25k,还不包括"签字费",福利和奖金.当然,薪资也 ...

  8. linux(centos8):用fallocate快速生成大文件

    一,fallocate的用途? 1,用途 我们有时需要用大文件来测试下载速度, 有时需要用大文件来覆盖磁盘空间, 如果在网上搜索,很多文章讲的是使用dd等工具, 事实上linux系统已经内置了生成大文 ...

  9. centos8平台用ffprobe获取视频文件信息(ffmpeg4.2.2)

    一,ffprobe的作用 ffprobe是强大的视频分析工具, 用于从多媒体流中获取相关信息或查看文件格式信息, 并以可读的方式打印 说明:刘宏缔的架构森林是一个专注架构的博客,地址:https:// ...

  10. CentOS 6编译安装Redis

    [root@localhost ~]# vim /etc/sysconfig/iptables # 添加如下:-A INPUT -m state –state NEW -m tcp -p tcp –d ...