Java操作XML的第一种方式

package myday02.xml.exercise;

import java.io.BufferedReader;
import java.io.FileOutputStream;
import java.io.InputStreamReader;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

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

public class XMLDemo {

	public static void main(String[] args) throws Exception {

		System.out.println("添加用户:(a)");
		System.out.println("删除用户:(b)");
		System.out.println("查询成绩:(c)");
		System.out.println("退出程序:(d)");
		System.out.print("请输入操作类型:");
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String type = br.readLine();

		if ("d".equals(type)) {
			System.out.println("ByeBye......");
		}

		String targetFileName = "src/main/resources/myday02/xml/exercise/exam.xml";

		if ("a".equals(type)) {
			Student student = new Student();
			System.out.print("用户姓名为:");
			BufferedReader brName = new BufferedReader(new InputStreamReader(System.in));
			String name = brName.readLine();
			student.setName(name);

			System.out.print("用户身份证号为:");
			BufferedReader brIdCard = new BufferedReader(new InputStreamReader(System.in));
			String idCard = brIdCard.readLine();
			student.setIdCard(idCard);

			System.out.print("用户准考证号为:");
			BufferedReader brExamId = new BufferedReader(new InputStreamReader(System.in));
			String examId = brExamId.readLine();
			student.setExamId(examId);

			System.out.print("用户所在地为:");
			BufferedReader brLocation = new BufferedReader(new InputStreamReader(System.in));
			String location = brLocation.readLine();
			student.setLocation(location);

			System.out.print("用户成绩为:");
			BufferedReader brgrade = new BufferedReader(new InputStreamReader(System.in));
			String grade = brgrade.readLine();
			student.setGrade(grade);

			addStudent(student, targetFileName);
		}

		if ("b".equals(type)) {
			System.out.print("删除用户名为:");
			BufferedReader brName = new BufferedReader(new InputStreamReader(System.in));
			String name = brName.readLine();
			removeStudent(name, targetFileName);
		}
		
		if("c".equals(type)){
			System.out.print("查询用户名为:");
			BufferedReader brName = new BufferedReader(new InputStreamReader(System.in));
			String name = brName.readLine();
			queryStudentGrade(name, targetFileName);
		}

	}

	private static void queryStudentGrade(String name, String targetFileName) throws Exception {
		Document document = getDocument(targetFileName);
		NodeList list = document.getElementsByTagName("name");
		int index = -1;
		for(int i=0; i<list.getLength(); i++){
			if(list.item(i).getTextContent().equals(name)){
				index = i;
				break;
			}
		}
		if(index ==-1){
			System.out.println("你所查询的用户并不存在!!!!!!");
		}else {
			Element element  = (Element) list.item(index).getParentNode();
			Element gradeElement = (Element) element.getElementsByTagName("grade").item(0);
			System.out.println("用户" + name +"的成绩为" + gradeElement.getTextContent());
		}
	}

	private static void removeStudent(String name, String targetFileName) throws Exception {
		Document document = getDocument(targetFileName);
		NodeList list = document.getElementsByTagName("name");
		int index = -1;
		for (int i = 0; i < list.getLength(); i++) {
			if (list.item(i).getTextContent().equals(name)) {
				index = i;
				break;
			}
		}

		if (index != -1) {
			Element ele = (Element) list.item(index);
			Element parentEle = (Element) ele.getParentNode();
			Element root = (Element) document.getElementsByTagName("exam").item(0);
			root.removeChild(parentEle);
			writeToXML(document, targetFileName);
			System.out.println("用戶刪除成功!!!!");
		} else {
			System.out.println("文件中没有用户名为 " + name + " 的記錄!!!!!" );
		}
	}

	private static void addStudent(Student student, String fileName) throws Exception {
		Document document = getDocument(fileName);
		Element eleStudent = document.createElement("student");
		eleStudent.setAttribute("examid", student.getExamId());
		eleStudent.setAttribute("idcard", student.getIdCard());
		Element eleName = document.createElement("name");
		eleName.setTextContent(student.getName());
		Element eleLocation = document.createElement("location");
		eleLocation.setTextContent(student.getLocation());
		Element eleGrade = document.createElement("grade");
		eleGrade.setTextContent(student.getGrade());
		eleStudent.appendChild(eleName);
		eleStudent.appendChild(eleLocation);
		eleStudent.appendChild(eleGrade);

		Element exam = (Element) document.getElementsByTagName("exam").item(0);
		exam.appendChild(eleStudent);
		writeToXML(document, fileName);
		System.out.println("用户添加成功!!!!");

	}

	private static Document getDocument(String fileName) throws Exception {
		DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
		DocumentBuilder builder = docFactory.newDocumentBuilder();
		Document document = builder.parse(fileName);
		return document;
	}

	private static void writeToXML(Document document, String targetFileName) throws Exception {
		TransformerFactory transformerFactory = TransformerFactory.newInstance();
		Transformer trans = transformerFactory.newTransformer();
		trans.transform(new DOMSource(document), new StreamResult(new FileOutputStream(targetFileName)));
	}

}


package myday02.xml.exercise;

public class Student {
	private String name;
	private String examId;
	private String idCard;
	private String location;
	private String grade;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getExamId() {
		return examId;
	}
	public void setExamId(String examId) {
		this.examId = examId;
	}
	public String getIdCard() {
		return idCard;
	}
	public void setIdCard(String idCard) {
		this.idCard = idCard;
	}
	public String getLocation() {
		return location;
	}
	public void setLocation(String location) {
		this.location = location;
	}
	public String getGrade() {
		return grade;
	}
	public void setGrade(String grade) {
		this.grade = grade;
	}
	
	

}



<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<exam>

	<student examid="1101001000234" idcard="532401197504210032">
		<name>aaaa</name>
		<location>北京</location>
		<grade>100.00</grade>
	</student>
</exam>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值