通过Dom4J生成xml,生成了xml之后,去掉声明部分,然后用循环进行批量生成。
实现代码如下(需要dom4j,IOUtils的jar包):
package testXML;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;
import java.util.Random;
import org.apache.commons.io.IOUtils;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
import org.junit.Test;
/**
* 类描述:生成测试xml文件
* @author: 张宇
* @date: 日期: 2018年7月26日 时间: 下午3:36:48
* @version 1.0
*/
public class CreateXmlFile {
@Test
public void fun() throws Exception {
long startTime = System.currentTimeMillis();
for (int i = 1; i <= 10; i++) {
String filePath = "D:\\测试文件\\选择题混合\\10答题点\\"
+ "CH_" + i + ".pyk";
// String filePath = "D:\\test2.xml";
File file = new File(filePath);
if(!file.exists()){
createXML(file, i);
modifyXmlFiles(file);
}
}
long endTime = System.currentTimeMillis();
System.out.println("写入xml文件完成!");
System.out.println("程序总共执行了:" + (endTime - startTime)+"毫秒");
}
// 删除文件中的第一行空白数据
private void modifyXmlFiles(File file) throws FileNotFoundException,
IOException {
// TODO Auto-generated method stub
FileInputStream fis = new FileInputStream(file);
List<String> list = IOUtils.readLines(fis);
fis.close();
if (file.exists()) {
file.delete();
}
for (int i = 0; i < list.size(); i++) {
if (list.get(i).trim().equals("")) {
} else {
IOUtils.write(list.get(i) + "\r\n", new FileOutputStream(file,
true));
}
}
}
/**
* DOM4J方式创建xml文件
* @param file
* @throws Exception
*/
public void createXML(File file, int i) throws Exception {
Document document = DocumentHelper.createDocument();
Element root = document.addElement("resourceID_label");
// document.getRootElement().asXML();
Element resourceID = root.addElement("resourceID");
String textString = "CH_" + i;
resourceID.setText(textString);
Element question_type = root.addElement("question_type");
question_type.setText("1");
Element serial_number_label = root.addElement("serial_number_label");
Element answer = serial_number_label.addElement("answer");
String randomString = pickRandom();
answer.setText(randomString);
Element score = serial_number_label.addElement("score");
score.setText("2");
Element people_number = serial_number_label.addElement("people_number");
people_number.setText("0");
Element comment = serial_number_label.addElement("comment");
comment.setText("正确答案1");
OutputFormat format = OutputFormat.createPrettyPrint();
//format.setNewLineAfterDeclaration(false);
// format.setNewlines(true);
// format.setTrimText(true);
// 将XML内容写入到文件当中
XMLWriter writer = new XMLWriter(new FileOutputStream(file), format);
writer.setEscapeText(false);// 字符是否转义,默认true
// 如果是需要默认头部,那么就是
// Writer(document);
// 如果不需要默认头部;
// System.out.println(document.getRootElement().asXML());
writer.write(document.getRootElement());
writer.close();
}
// 获取一个数组中任意的一个元素
private String pickRandom() {
String[] array = { "A", "B", "C", "D" };
int length = array.length;
Random random = new Random();
return array[random.nextInt(length)];
}
}
运行结果:
写入xml文件完成!
程序总共执行了:84毫秒
整个代码的步骤:
1.按照要求生成XML文档,去掉申明的一部分(有个第一行空行问题没有解决)
2.读取生成的XML文档,然后去掉第一行空行
3.然后保存没有空行的xml到文件当中,得到需要的文档