1. 程式人生 > >java高階特性與實戰專案——第六章-課後作業

java高階特性與實戰專案——第六章-課後作業

1.編寫XML文件,具有值自行新增,至少新增2個學員的成績資訊,包括學生id、姓名、學科、分數。

<?xml version="1.0" encoding="UTF-8" standalone="no"?><Student>
	<student id="1">
		<Name>張三</Name>
		<course>語文</course>
		<score>80分</score>
	</student>
	<student id="2">
		<Name>小段</Name>
		<course>語文</course>
		<score>58分</score>
	</student>
</Student>


2.使用DOM解析,要求(1.刪除id為1的成績    2.修改id為2的成績為60    3.新增一個id為3的學員資訊)

package come.bdqn;

import java.io.FileOutputStream;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
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.Attr;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.w3c.dom.Text;

public class Student {
	/**
	 * 獲取文件
	 */
	DocumentBuilderFactory dbf = null;
	DocumentBuilder db = null;
	Document doc = null;
	public void gain() {
		//建立工廠
		dbf = DocumentBuilderFactory.newInstance();
		try {
			//從工廠獲得解析器
			db = dbf.newDocumentBuilder();
			//解析XML文件
			doc = db.parse("Student.xml");
			NodeList stuList = doc.getElementsByTagName("student");
			for (int i = 0; i < stuList.getLength(); i++) {
				Node student = stuList.item(i);
				System.out.println("第"+(i+1)+"位學生的資訊:");
				NamedNodeMap stu = student.getAttributes();
				for (int j = 0; j < stu.getLength(); j++) {
					Node stu1 = stu.item(j);
					System.out.println(stu1.getNodeName()+":"+stu1.getNodeValue());
				}
				NodeList Stu2 = student.getChildNodes();
				for (int j = 0; j < Stu2.getLength(); j++) {
					Node Student = Stu2.item(j);
					if(Stu2.item(j) instanceof Element) {
							System.out.println(Student.getNodeName()+":"+Student.getTextContent());
						}
				}
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	/**
	 * 刪除節點
	 */
	public void delete() {
		try {
			db = dbf.newDocumentBuilder();
			Document doc = db.parse("Student.xml");
			NodeList list =  doc.getElementsByTagName("student");
			for (int i = 0; i < list.getLength(); i++) {
				Element element = (Element) list.item(i);
				String Name = element.getAttribute("id");
				if(Name.equals("1")) {
					element.getParentNode().removeChild(element);
				}
			}
			TransformerFactory transformerFactory = TransformerFactory.newInstance();
			Transformer transformer = transformerFactory.newTransformer();
			DOMSource domSource = new DOMSource(doc);
			transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
			StreamResult result = new StreamResult(new FileOutputStream("Student.xml"));
			transformer.transform(domSource, result);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	/**
	 * 新增節點
	 */
	public void add() {
		//建立student,Name,course,score節點
		Element stuElement = doc.createElement("student");
		Element NaElement = doc.createElement("Name");
		Element couElement = doc.createElement("course");
		Element scoElement = doc.createElement("score");
		//元素節點
		Attr attr = doc.createAttribute("id");
		attr.setValue("3");
		//文字節點
		Text testname = doc.createTextNode("哈皮");
		Text testcou = doc.createTextNode("英語");
		Text testscore = doc.createTextNode("15");
		//將文字節點新增到元素的子節點
		NaElement.appendChild(testname);
		couElement.appendChild(testcou);
		scoElement.appendChild(testscore);
		//將元素節點新增到student
		stuElement.setAttributeNode(attr);
		stuElement.appendChild(NaElement);
		stuElement.appendChild(couElement);
		stuElement.appendChild(scoElement);
		//得到根元素
		Element men = doc.getDocumentElement();
		men.appendChild(stuElement);
		try {
			//儲存文字
			TransformerFactory transformerFactory = TransformerFactory.newInstance();
			Transformer transformer = transformerFactory.newTransformer();
			DOMSource domSource = new DOMSource(doc);
			transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
			StreamResult result = new StreamResult(new FileOutputStream("Student.xml"));
			transformer.transform(domSource, result);
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}
	}
	/**
	 * 修改資訊
	 */
	public void amend() {
		NodeList list = doc.getElementsByTagName("student");
		for (int i = 0; i < list.getLength(); i++) {
			Element stuElement = (Element) list.item(i);
			String stu = stuElement.getAttribute("id");
			if(stu.equals("2")) {
				NodeList sco = stuElement.getElementsByTagName("score");
				Element element = (Element) sco.item(0);
				element.setTextContent("58分");
			}
			try {
				//儲存文字
				TransformerFactory transformerFactory = TransformerFactory.newInstance();
				Transformer transformer = transformerFactory.newTransformer();
				DOMSource domSource = new DOMSource(doc);
				transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
				StreamResult result = new StreamResult(new FileOutputStream("Student.xml"));
				transformer.transform(domSource, result);
			} catch (Exception e) {
				// TODO: handle exception
				e.printStackTrace();
			}
		}
	}
	public static void main(String[] args) {
		Student student = new Student();
		student.gain();
		student.delete();
		student.amend();
		student.add();
	}
}
<?xml version="1.0" encoding="UTF-8" standalone="no"?><Student>
	
	<student id="2">
		<Name>小段</Name>
		<course>語文</course>
		<score>58分</score>
	</student>
<student id="3"><Name>哈皮</Name><course>英語</course><score>15</score></student></Student>


相關推薦

java高階特性實戰專案——-課後作業

1.編寫XML文件,具有值自行新增,至少新增2個學員的成績資訊,包括學生id、姓名、學科、分數。<?xml version="1.0" encoding="UTF-8" standalone="no"?><Student> <student i

java高階特性實戰專案——-課後作業

1.編寫一個程式,查詢指定域名為www.taobao.com的所有可能地址。import java.io.IOException; import java.net.InetAddress; import java.net.Socket; public class TestT

java高階特性實戰專案——:XML

public class Student { /** * 獲取文件 */ Document document = null; public void gain() { //建立工廠 DocumentBuilderF

java高階特性實戰專案 ——: 網路程式設計

1.編寫一個程式,查詢指定域名為www.taobao.com的所以可能的ip地址。public class Tb { public static void main(String[] args) { try { In

Java高階特性實戰專案 1集合框架

/** * 第1章集合框架 5.建立一個HashMap物件,並在其中新增一些學員的姓名和他們的分數,鍵為學員姓名(使用String型別), * 值為學員分數(lnteger型別)從HashMap物件中獲取這些學員的成績並輸出。修改其中一名學員的成績, 然後再次輸出所有學員的成績。 *  */public cl

java高階特性實戰專案 ——第二:實用類 課後作業

1.從控制檯輸入字串,字串的長度必須為是6,如果輸入的字元長度不等於6,則重新輸入。import java.util.Scanner; public class Alphabetic { public static void main(String[] args)

java高階特性實戰專案 第一集合框架——課後作業

  建立一個類Queue 代表隊列,新增add(Object o)及get()方法,並新增main方法進行驗證import java.util.LinkedList; public class Queue { LinkedList queue; public Que

Java高階特性實戰專案——第二-實用類課後作業

1.從控制檯輸入字串,字串的長度必須是6,如果輸入的字串長度不等於6,則重新輸入。package coome.dierzhangkeho; import java.util.Scanner; /** * * @author huang * */ public cl

HTML5和CSS3開發課後作業

1,製作北大青鳥網站的中心開班模組。<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>中心開班資訊</t

《深入理解Java虛擬機器——JVM高階特性最佳實踐(2版)》pdf

前言 致謝 第一部分 走近Java 第1章 走近Java / 2 1.1 概述 / 2 1.2 Java技術體系 / 3 1.3 Java發展史 / 5 1.4 展望Java技術的未來 / 9 1.4.1 模組化 / 9 1.4.2 混合語言 / 9 1.4.

Java記憶體回收知識(讀書筆記)--深入理解Java虛擬機器——JVM高階特性最佳實踐(2版)2.2~2.3

1.哪些地方的記憶體要回收? Java程式運時的記憶體包括以下幾部分:程式計數器,Java虛擬機器棧,本地方法棧,Java堆,方法區(執行時常量池是方法區的一部分)。 程式計數器,Java虛擬機器棧,本地方法棧是隨執行緒而生,隨執行緒而亡,它們的分配的記憶體大小已知,因此不

java並發編程實戰----任務執行

獨立 設定 結構 conn web服務器 系統資源 AR 決定 pri 任務:通常是一些抽象的且離散的工作單元。大多數並發應用程序都是圍繞"任務執行"來構造的,把程序的工作分給多個任務,可以簡化程序的組織結構便於維護 一、在線程中執行任務 任務的獨立性:任務並不依賴於其

廖大python實戰專案

今天的比較簡單,我就直接把原始碼上自己不容易搞懂的寫一下吧。 merge()方法 def merge(defaults, override): r = {} for k, v in defaults.items(): if k in override:

學習筆記之《Java核心技術卷I》---- 介面、lambda表示式內部類

介面中的所有方法都自動地屬於public。因此,在介面中宣告方法時,不必提供關鍵字public;但是在實現介面的類中,必須在實現介面中的方法時把介面中的方法宣告為public,如果不宣告,那就預設包訪問許可權,編譯器會報錯 實現Comparabale介面,必須實現其中的compareTo

【無私分享:ASP.NET CORE 專案實戰)】讀取配置檔案(一) appsettings.json

目錄索引 簡介   在我們之前的Asp.net mvc 開發中,一提到配置檔案,我們不由的想到 web.config 和 app.config,在 core 中,我們看到了很多的變化,新的配置系統顯得更加輕量級,具有更好的擴充套件性,並且支援多樣化的資料來源。   部落格園對於這個的

《Python資料分析挖掘實戰學習拓展——偷漏稅使用者識別

本文是繼上一篇文章中上機實驗之後的拓展思考部分的練習記錄。此拓展思考部分主要目標是依據附件所提供的汽車銷售企業的部分經營指標,來評估汽車銷售行業納稅人的偷漏稅傾向,建立偷漏稅行為識別模型。 本次拓展思考練習分以下幾個步驟進行: 資料初步探索分析 資料預處理

Redis 設計實現() -- 整數集合(intset)

相同 spa edi redis cnblogs 保存 空間 數值 一個數 概述 1.intset概述 2.intset實現 3.intset升級 intset概述 整數集合是Redis集合鍵的底層實現之一,當值都為整數時,redis就會選擇整數集合作為底層實現。 可以保

Java編程思想》筆記 訪問權限控制

互訪問 無法 this port 3.2 access 不能 外部 包名 1.編譯單元 一個 編譯單元即 .java 文件 內只能有一個 public 類 且該文件名必須與public 類名 完全一致。 編譯單元內也可以沒有public類 文件名可隨意。 2. 包:庫

《機器學習實戰----支援向量機

支援向量機 SVM(Support Vector Machine)實際上是應用於二分類的一個分類器,其基本模型定義為特徵空間上的間隔最大的線性分類器,其學習策略便是間隔最大化,最終可轉化為一個凸二次規劃問題的求解。這裡不對整個過程進行推導,因為看了很多部落格,有幾篇大佬的部落格寫的非

《Java8實戰》-讀書筆記(用流收集資料-01)

用流收集資料 我們在前一章中學到,流可以用類似於資料庫的操作幫助你處理集合。你可以把Java 8的流看作花哨又懶惰的資料集迭代器。它們支援兩種型別的操作:中間操作(如 filter 或 map )和終端操作(如 count 、 findFirst 、 forEach