Java程序设计应用(XML与TXT的转化)

1.AnalyzeTxtToXML

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Map;
import java.util.TreeMap;

import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.output.Format;
import org.jdom2.output.XMLOutputter;




public class Main {
	/*读取学生文件*/
	public static ArrayList readFile(String filename){
		ArrayList result = new ArrayList();	//记录每条学生信息
		try{
			//BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(new File(filename))));
			BufferedReader br = new BufferedReader(new FileReader(filename));  	//与上一行效果类似
			
			String lineTxt = null;
			while((lineTxt = br.readLine()) != null){
				result.add(lineTxt);
			}
			br.close();
		}catch(Exception e){
			e.printStackTrace();
		}
		
		return result;
	}
	
	/*测试输出学生map*/
	public static void showMap(Map map){
		for(String s: map.keySet()){
			System.out.print(s + " " + map.get(s).getStuName() + " ");
			for(Course c: map.get(s).getCourses()){
				System.out.println(c.getCourseName() + " " + c.getScore());
			}
		}
	}
	
	/*将学生信息写入xml文件*/
	public static void writeFile(Map map, String filename){
		//创建文档
		Document document =  new Document();
		//创建根元素,即students标签
		Element students = new Element("students");
		document.addContent(students);
		
		Element student;
		for(String s: map.keySet()){
			student = new Element("student");
			
			Element stuId = new Element("学号");
			stuId.setText(map.get(s).getStuId());
			student.addContent(stuId);
			
			Element stuName = new Element("姓名");
			stuName.setText(map.get(s).getStuName());
			student.addContent(stuName);
			
			Element course;
			for(Course c: map.get(s).getCourses()){
				course = new Element("课程");
				course.setAttribute("课程名", c.getCourseName());
				course.setText(c.getScore() + "");
				student.addContent(course);
			}
			
			//将单个学生标签加入根标签students中
			students.addContent(student);
		}
		
		//设置xml输出格式
		Format format = Format.getPrettyFormat();
		
		//得到xml输出流
		XMLOutputter out = new XMLOutputter(format);
		
		//把数据输出到xml文件中
		try{
			out.output(document, new FileOutputStream(filename));
		}catch(Exception e){
			e.printStackTrace();
		}
		
	}
	
	/******Main******/
	public static void main(String[] args){
		//读取文件
		ArrayList strs = readFile("src\\test.txt");
		//test:输出文件
		for(int i=0; i students = new TreeMap(new Comparator(){

			public int compare(String arg0, String arg1) {
				// 降序
				Integer id0 = Integer.parseInt(arg0);
				Integer id1= Integer.parseInt(arg1);
				return id1.compareTo(id0);
			}
			
		});
		
		
		//解析每行学生信息
		String[] info;
		String stuId;
		for(int i=0; i());
				student.getCourses().add(new Course(info[2], Integer.parseInt(info[3])));
				students.put(stuId, student);
			}else{	//map已包含该学生,找到该学生并添加该行课程信息
				students.get(stuId).getCourses().add(new Course(info[2], Integer.parseInt(info[3])));
			}
		}
		
		//test:输出map
		showMap(students);
		
		writeFile(students, "src\\output.xml");
	}
}

2.AnalyzeXMLToTXT

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;

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


import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.input.SAXBuilder;

public class Main {
	
	/*读取xml文件成为Map(Jdom实现)*/
	public static Map readFile(String filename){
		// 创建一个DocumentBuilderFactory对象
        Map map = new TreeMap(new Comparator(){

			public int compare(String arg0, String arg1) {
				// 降序
				Integer id0 = Integer.parseInt(arg0);
				Integer id1= Integer.parseInt(arg1);
				return id1.compareTo(id0);
			}
        });
        try {   
            SAXBuilder builder = new SAXBuilder();   
            Document doc = builder.build(new File(filename));   
            Element foo = doc.getRootElement();   //得到文档根节点
            List allChildren = foo.getChildren();   
            System.out.println("子节点数量:" + allChildren.size());
           
            
            String stuNo, stuName, courseName;
            int score;
            
            for (int i = 0; i < allChildren.size(); i++) { 
            	Student student;//建立学生对象
                ArrayList courses = new ArrayList();	//建立课程列表
            	stuNo = ((Element)allChildren.get(i)).getChild("学号").getText();
            	stuName = ((Element)allChildren.get(i)).getChild("姓名").getText();
            	//score = Integer.parseInt(((Element)allChildren.get(i)).getChild("课程").getText());
            	//courseName = ((Element)allChildren.get(i)).getChild("课程").getAttributeValue("课程名");

            	//CourseList
            	List courseChildren = ((Element)allChildren.get(i)).getChildren("课程");	//所有课程
            	for(int j=0; j map){
		for(String s: map.keySet()){
			System.out.print(s + " " + map.get(s).getStuName() + " ");
			for(Course c: map.get(s).getCourses()){
				System.out.println(c.getCourseName() + " " + c.getScore());
			}
		}
	}
	/*Map输出成ArrayList*/
	public static ArrayList analyze(Map map){
		ArrayList list = new ArrayList();
		for(String s: map.keySet()){
			for(Course c: map.get(s).getCourses()){
				String str = s + "," + map.get(s).getStuName() + "," + c.getCourseName() + " " + c.getScore();
				list.add(str);	//添加
				//System.out.println(str);
			}
		}
		
		return list;
	}
	
	/*将内容写入txt文件*/
	public static void writeFile(ArrayList list, String filename){
		try{
			//若文件不存在则新建该文件
			File f = new File(filename);
            if (!f.exists()) {
                f.createNewFile();
            }
			
			//BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(new File(filename))));
			BufferedWriter bw = new BufferedWriter(new FileWriter(filename));  	//与上一行效果类似
			for(int i=0; i

 

你可能感兴趣的:(复试)