1.编写XML文档,具有值自行添加,至少添加2个学员的成绩信息,包括学生id、姓名、学科、分数。
<?xml version="1.0" encoding="UTF-8"?>
<scores>
<student id="1">
<name>谭志梅</name>
<course>语文</course>
<score>100分</score>
</student>
<student id="2">
<name>郭振</name>
<course>Java</course>
<score>70分</score>
</student>
</scores>
2.使用DOM解析,要求(1.删除id为1的成绩 2.修改id为2的成绩为60 3.添加一个id为3的学员信息)
public class Student {
/**
* 获取文档
*/
Document document = null;
public void gain() {
//创建工厂
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
try {
//从工厂获得解析器
DocumentBuilder db = dbf.newDocumentBuilder();
//解析XML文档
document = db.parse("成绩信息.xml");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 打印信息
*/
public void print() {
NodeList stuList = document.getElementsByTagName("student");
for (int i = 0; i < stuList.getLength(); i++) {
Node student = stuList.item(i);
Element element=(Element) student;
String str =element.getAttribute("id");
System.out.println("\nid:"+str);
NodeList Stu2 = student.getChildNodes();
for (int j = 0; j < Stu2.getLength(); j++) {
Node Student = Stu2.item(j);
if (Student.getNodeType() == Node.ELEMENT_NODE) {
System.out.println(Student.getNodeName()+":"+Student.getTextContent());
}
}
}
}
public static void main(String[] args) {
Student student = new Student(); //创建一个新的对象
student.gain();
student.print();
}
}
3,使用DOM对简答题1保存成绩信息的XML删除ID为1的成绩,修改ID为2的成绩为60.添加一个学生的成绩
public class Student {
/**
* 获取文档
*/
Document document = null;
public void gain() {
//创建工厂
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
try {
//从工厂获得解析器
DocumentBuilder db = dbf.newDocumentBuilder();
//解析XML文档
document = db.parse("成绩信息.xml");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 打印信息
*/
public void print() {
NodeList stuList = document.getElementsByTagName("student");
for (int i = 0; i < stuList.getLength(); i++) {
Node student = stuList.item(i);
Element element=(Element) student;
String str =element.getAttribute("id");
System.out.println("\nid:"+str);
NodeList Stu2 = student.getChildNodes();
for (int j = 0; j < Stu2.getLength(); j++) {
Node Student = Stu2.item(j);
if (Student.getNodeType() == Node.ELEMENT_NODE) {
System.out.println(Student.getNodeName()+":"+Student.getTextContent());
}
}
}
}
/**
* 删除节点
*/
public void delete() {
try {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
db = dbf.newDocumentBuilder();
Document document = db.parse("成绩信息.xml");
NodeList list = document.getElementsByTagName("student");
for (int i = 0; i < list.getLength(); i++) {
Element element = (Element) list.item(i);
String id = element.getAttribute("id");
if(id.equals("1")) {
element.getParentNode().removeChild(element);
}
}
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource domSource = new DOMSource(document);
transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
StreamResult result = new StreamResult(new FileOutputStream("新成绩信息.xml"));
transformer.transform(domSource, result);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 添加节点
*/
public void addinfo() {
//创建student,Name,course,score节点
Element stuElement = document.createElement("student");
Element NaElement = document.createElement("Name");
Element couElement = document.createElement("course");
Element scoElement = document.createElement("score");
//元素节点
Attr attr = document.createAttribute("id");
attr.setValue("3");
//文本节点
Text testname = document.createTextNode("王麻子");
Text testcou = document.createTextNode("数学");
Text testscore = document.createTextNode("45");
//将文本节点添加到元素的子节点
NaElement.appendChild(testname);
couElement.appendChild(testcou);
scoElement.appendChild(testscore);
//将元素节点添加到student
stuElement.setAttributeNode(attr);
stuElement.appendChild(NaElement);
stuElement.appendChild(couElement);
stuElement.appendChild(scoElement);
//得到根元素
Element men = document.getDocumentElement();
men.appendChild(stuElement);
try {
//保存文本
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource domSource = new DOMSource(document);
transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
StreamResult result = new StreamResult(new FileOutputStream("新成绩信息.xml"));
transformer.transform(domSource, result);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
/**
* 修改信息
*/
public void amend() {
NodeList list = document.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("60分");
}
try {
//保存文本
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource domSource = new DOMSource(document);
transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
StreamResult result = new StreamResult(new FileOutputStream("新成绩信息.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.print();
// student.delete(); //删除节点
// student.print();
// student.amend(); //修改
// student.print();
// student.addinfo(); //添加
// student.print();
}
}
4,使用DOM4J解析简答题1描述成绩信息的XML,输出成绩信息。
package Abb;
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 Dom4j {
public static void main(String[] args) {
try {
//读取XML文件,获得Document对象
SAXReader reader= new SAXReader();
Document doc=reader.read("成绩信息.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();
}
}
}