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>