一 -xml文件处理
1. 文件简述
源文件来自NLPIR微博博主语料库。数据是xml文件
文件解压后389MB,将近1100万行数据,每个人的数据由14个节点组成
其他(见本文末尾:关于文件)
2. xml处理代码
package per.wanghai;
/**
* @author 王海[https://github.com/AtTops]
* @version V1.0
* @package per.wanghai
* @Description
* @Date 2017/10/20 20:50
*/
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;
public class XmlTxt {
private String TXT_FLIENAME = "weibo_3500014.txt";
String XML_FLIENAME = "D:/JavaStudy/myudf/src/main/weibo_3500014.xml";
// 对程序运行时间进行记录
long startTime = System.currentTimeMillis();
// 调用同一个包中的WriteToFile类的createFlies方法,返回file
File file_return = WriteToFile.createFile(TXT_FLIENAME);
// 调用WriteToFile类的BufferedWriter方法,返回buffWriter
BufferedWriter buffWriter = WriteToFile.openBufferedWriter(file_return);
/**
* @throws Exception
*/
private void test() throws Exception {
// 创建SAXReader对象
SAXReader reader = new SAXReader();
// 读取文件,转换成Document
Document document = reader.read(new File(XML_FLIENAME));
// 获取根节点元素对象
Element root = document.getRootElement();
/* elementiterator() 方法获取是该节点的孩子节点。
但某个孩子节点还有子节点,这些子节点并不在这个方法获取的节点中
(也就是说这里我们获取所有的<person>节点)
*/
Iterator<Element> iterator = root.elementIterator();
while (iterator.hasNext()) {
Element node = iterator.next();
// 同时迭代当前节点下面的所有一级子节点(我们这里person节点的子节点再无子节点)
List<Element> listElement = node.elements();