您的位置:首页 > 编程语言 > Java开发

Java解析、读取XML文件并存入TXT文件的简单例子

2018-01-16 10:04 549 查看

Java解析、读取XML文件并存入TXT文件的简单例子

XML文件的来源是通过集搜客在淘宝上爬取的客户评论信息,供同学作简单的文本聚类用。选取的是女装评论,因为考虑到女生对于服装的理解会比男生更加深刻、阅历更加丰富。XML文件的具体内容构造非常简单,如下图:



XML文件的内容获取是采用DOM结点实现方法,XML文件的格式是类似于HTML的格式,DOM结点比较明显。获取item结点里的两个子节点中的内容,写入TXT文本,是本次学习的目的。关键语句为:

doc.getElementsByTagName("item").item(i).getFirstChild().getNodeValue();


使用Document返回一个包含文本的对象doc,用NodeList存放item结点的数据,返回nl对象,并用nl对象的长度作为遍历循环次数的阈值,来对每个item结点进行读取和转存。

另外还有其他三种方法我认为比较好的放在这里与大家分享,希望有所帮助,分别是:

1. DOM4j实现方法

2. JDOM实现方法

3. SAX实现方法

转自:java读取xml文件的四种方法

本次学习的目的是为了应同学的变态要求,将每个评论者的评论信息放在一个TXT文件里,所以需要用到File的构造方法和创建新文件的方法。

本次学习使用的是BufferWriter来写入文本,需要注意的是使用到了BufferWriter实例化对象bw的flush方法,为的是尽快的将缓冲区的数据“推入”目标文件,虽然bw的close方法最后也会处理,但是我的初衷是为了让数据不丢失,close仅用于关闭写入流。另外还有PrintWriter和FileWriter两个方法,具体例子也贴出来,转自:文件读写的方法

最后放入全部代码:

import java.io.BufferedWriter;
import java.io.File;

import java.io.FileWriter;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;
import org.w3c.dom.NodeList;

public class MyXMLReader2DOM {
public static void main(String arge[]) {
int sum = 0;//计数txt文件
for(int t = 1;t<=45;t++){//有45个xml文件
try {
File f = new File("E:\\Documents\\实验室\\爬取数据\\淘宝评论文本\\comment\\淘宝商品评论"+t+".xml");
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(f);
NodeList nl = doc.getElementsByTagName("item");//获得item里面的所有结点数据
//System.out.println(nl.getLength());
for (int i =1; i <=nl.getLength(); i++) {
//System.out.print("评论者:"+ doc.getElementsByTagName("评论者").item(i).getFirstChild().getNodeValue()+"\n");
//System.out.println("评论文本:"+ doc.getElementsByTagName("评论文本").item(i).getFirstChild().getNodeValue().trim());
File ff = new File("E:\\Documents\\实验室\\爬取数据\\xmltotxt\\"+sum+1+".txt");
if(doc.getElementsByTagName("评论文本").item(i).getFirstChild().getNodeValue()!=null){
ff.createNewFile();
BufferedWriter bw = new BufferedWriter(new FileWriter(ff));
bw.write(doc.getElementsByTagName("评论文本").item(i).getFirstChild().getNodeValue().trim());//注意去除字符串首尾空格
bw.flush();//将缓冲区数据推入目标文件
bw.close();
sum++;
System.out.println("写好了第"+sum+"个~");//计评论数
}
}
} catch (Exception e) {
e.printStackTrace();

8f5e
}
}
}
}


这次的代码仅用来理解读取XML文件的方法,所以写在了main函数里,其实严格来说,应当将新建文件、prase方法、写入数据分开来写,不过为了方便,就写在一块了。

另外,我个人能够优化的就是通过JFileChooser来人为选xml文件来解析,不知道能否选中多个xml文件。其次,我使用了Windows的DOS窗口和excel文件生成批量处理文件(xxx.bat)对xml进行批量重命名,这样我才能用for循环读取xml文件,看看以后能否有更好的方法。

写入TXT文件的方法比较容易实现,我的下一步计划是待小组成员爬完10万条新闻文章数据之后,存入MySQL数据库(存在疑惑:好多人在用oracle等等,不知道掌握哪个更加实用)。

编者注:

第一次写博客,也是为了在大三的阶段记录一下自己的成果,会比较基础,有什么错误或者改正优化的地方,希望大佬们不吝赐教!一直苦于没有老师指导,希望各位能够给予一点建议。一直有零碎的知识点会出现在平时的应用上面,之前没注意,过去就过去了,但是后来用的时候还得去翻收藏夹,现在想通过一些简单的例子自己写下来,既是一种总结,也是一种记录吧。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java xml