JAVA高级特性与实战项目第六章XML课后作业

			JAVA高级特性与实战项目第六章XML课后作业
第一题编写XML结构的学员信息
<?xml version="1.0" encoding="UTF-8"?>
<Scores>
	<student id ="1">
	<name>张三 </name>
	<coures>JAVA</coures>
	<score>99</score>
	</student>
		<student id ="2">
	<name>李四 </name>
	<coures>C#</coures>
	<score>60</score>
	</student>
		<student id ="3">
	<name>赵六 </name>
	<coures>SQL</coures>
	<score>80</score>
	</student>
</Scores>
第二题,输出第一题的信息
package xml;

import java.io.IOException;

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

import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

public class Score {
	Document doc = null;

	public void getDocument() {
		DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
		try {
			DocumentBuilder db = dbf.newDocumentBuilder();
			doc = db.parse("scores.xml");

		} catch (ParserConfigurationException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		} catch (SAXException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		} catch (IOException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		}

	}

	public void showscore() {
		// 获取节点				标记名
		NodeList stulist = doc.getElementsByTagName("student");
		for (int i = 0; i < stulist.getLength(); i++) {
			Node student = stulist.item(i);
			System.out.println("第"+(i+1)+"个学生\n");
			NamedNodeMap num= student.getAttributes();//获取属性
			
			for (int j = 0; j < num.getLength(); j++) {
				Node Name = num.item(j);
				System.out.println(Name.getNodeName() + ":" + Name.getNodeValue() + " ");
			}
				NodeList sco = student.getChildNodes();//获取子节点
				for (int k = 0; k < sco.getLength(); k++) {
					Node scor= sco.item(k);
					if (scor.getNodeType()==Node.ELEMENT_NODE) {
						System.out.println(scor.getNodeName()+":"+scor.getTextContent()+" ");
					}
				}
				}
			}

	public static void main(String[] args) {
		Score score=new Score();
		score.getDocument();
		score.showscore();
	}

}
第三题,删除信息,修改信息,添加信息
package xml;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

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.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
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;
import org.xml.sax.SAXException;

public class Score {
	Document doc = null;

	public void getDocument() {
		DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
		try {
			DocumentBuilder db = dbf.newDocumentBuilder();
			doc = db.parse("scores.xml");

		} catch (ParserConfigurationException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		} catch (SAXException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		} catch (IOException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		}

	}

	public void showscore() {
		// 获取节点				标记名
		NodeList stulist = doc.getElementsByTagName("student");
		for (int i = 0; i < stulist.getLength(); i++) {
			Node student = stulist.item(i);
			System.out.println("第"+(i+1)+"个学生");
			System.out.println();
			NamedNodeMap num= student.getAttributes();//获取属性
			
			for (int j = 0; j < num.getLength(); j++) {
				Node Name = num.item(j);
				System.out.println(Name.getNodeName() + ":" + Name.getNodeValue() + " ");
			}
				NodeList sco = student.getChildNodes();//获取子节点
				for (int k = 0; k < sco.getLength(); k++) {
					Node scor= sco.item(k);
					if (scor.getNodeType()==Node.ELEMENT_NODE) {
						System.out.println(scor.getNodeName()+":"+scor.getTextContent()+" ");
						
					}
					
				}
				System.out.println();
				}
			}
	//删除信息
	public void delete() {
		NodeList stulist = doc.getElementsByTagName("student");
		for (int i = 0; i < stulist.getLength(); i++) {
			Element stu = (Element) stulist.item(i);
			String den= stu.getAttribute("id");
				
				if (den.equals("1")) {
					stu.getParentNode().removeChild(stu);
				}
			}
		}
	//修改信息
	public void modify() {
		NodeList list= doc.getElementsByTagName("student");
		for (int i = 0; i < list.getLength(); i++) {
			Element score = (Element) list.item(i);
			String sco = score.getAttribute("score");
			if (sco.equals("60")) {
				score.setAttribute("score", "100");
			}
		}
	}
	//添加信息
	public void add() {
		Element element= doc.createElement("student");
		Element names= doc.createElement("name");
		Element cou= doc.createElement("coures");
		Element sco= doc.createElement("score");
		//元素节点
		Attr att=doc.createAttribute("id");
		att.setValue("4");
		//文本节点
		Text textname=doc.createTextNode("王五");				
		Text textcoure =doc.createTextNode("JAVA");				
		Text textscore = doc.createTextNode("100");	
		//将文本节点添加到元素的子节点
		names.appendChild(textname);
		cou.appendChild(textcoure);
		sco.appendChild(textscore);
		//将元素的子节点添加到student
		element.appendChild(names);
		element.appendChild(cou);
		element.appendChild(sco);
		element.setAttributeNode(att);
		//得到根元素
		Element men=doc.getDocumentElement();
		men.appendChild(element);
		

	}
	
	//保存信息
	public void conserve() {
		TransformerFactory transformerFactory = TransformerFactory.newInstance();
		try {
			Transformer transformer = transformerFactory.newTransformer();
			DOMSource dom = new DOMSource(doc);
			transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
			StreamResult result=new StreamResult(new FileOutputStream("newscores.xml"));
			transformer.transform(dom, result);
		} catch (TransformerConfigurationException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		} catch (FileNotFoundException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		} catch (TransformerException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		}
		
	}

	public static void main(String[] args) {
		Score score=new Score();
		score.getDocument();
		score.modify();//修改
		score.add();//添加
		score.delete();//删除
		score.conserve();//保存
		score.showscore();//显示
	}

}
第四题使用DOM4J输出XML的信息
package xml;

import java.util.Iterator;
import java.util.List;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class Dom4jstuden {
	
	public void show() {
		
	
	 try {
		 //读取XML文件,获得Document对象
		 SAXReader reader= new SAXReader();
		 Document doc=reader.read("scores.xml");
		 //获取文档根元素
	   Element stu= doc.getRootElement();
	   //迭代元素节点
	   Iterator itertor = stu.elementIterator();
	   while (itertor.hasNext()) {
		//
		Element pepo = (Element) itertor.next();
		List<Attribute> syuatt= pepo.attributes();
		for (Attribute attribute : syuatt) {
			System.out.println(attribute.getName()+":"+attribute.getValue());
		}//迭代子节点
		 Iterator tyep= pepo.elementIterator();
		 while (tyep.hasNext()) {
			Element info = (Element) tyep.next();
			System.out.println(info.getName()+":"+info.getStringValue());
		}
	}
	} catch (DocumentException e) {
		// TODO 自动生成的 catch 块
		e.printStackTrace();
	}
	}
	public static void main(String[] args) {
		Dom4jstuden dom4jstuden=new Dom4jstuden();
		dom4jstuden.show();
	}
}


猜你喜欢

转载自blog.csdn.net/tb19930719/article/details/80498702