XML-DOM parsing case
[Title]: Implement a simple console program based on XML files, which can check student scores, add students, delete students, etc.
xml file is saved in the src/com/dom/exercise folder, its format is as follows:
<?xml version="1.0" encoding="utf-8" standalone="no"?><students>
<student sid="001">
<name>小明</name>
<course>
<java>90</java>
<oracle>90</oracle>
<vb>93</vb>
</course>
</student>
<student sid="002">
<name>小李</name>
<course>
<java>78</java>
<oracle>86</oracle>
<vb>98</vb>
</course>
</student>
<student sid="003">
<name>小王</name>
<course>
<java>89</java>
<oracle>83</oracle>
<vb>95</vb>
</course>
</student></students>This can be said to be the simplest program, slightly The complicated point is that it must be implemented based on XML files, so DOM parsing must be used here. SAX cannot be used because SAX parsing can only read XML files and cannot update them.
1. First write StudentBean, as follows:
package com.dom.exercise;public class Student {
private String id = null;
private String name = null;
private int score_java;
private int score_oracle;
private int score_vb;
public Student() {
} public Student(String id, String name, int score_java, int score_oracle,
int score_vb) {
super();
this.id = id;
this.name = name;
this.score_java = score_java;
this.score_oracle = score_oracle;
this.score_vb = score_vb;
} public String getId() {
return id;
} public void setId(String id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public int getScore_java() {
return score_java;
} public void setScore_java(int score_java) {
this.score_java = score_java;
} public int getScore_oracle() {
return score_oracle;
} public void setScore_oracle(int score_oracle) {
this.score_oracle = score_oracle;
} public int getScore_vb() {
return score_vb;
} public void setScore_vb(int score_vb) {
this.score_vb = score_vb;
}
}2. Write the most critical StudentService class, which performs XML document Various operations
import java.util.ArrayList;
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.Node;
import org.w3c.dom.NodeList;
public class StudentService {
private static Document document = null;
private static String path = "src/com/dom/exercise/student.xml";
static{
try{
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
document = documentBuilder.parse(path);
}catch(Exception e){
System.out.println("初始化失败...");
e.printStackTrace();
}
} /**
* 获取所有学生信息
* @return
*/
public static ArrayList<Student> readAll(){
ArrayList<Student> array = new ArrayList<Student>();
NodeList students = document.getElementsByTagName("student");
for (int i = 0; i < students.getLength(); i++) {
Element node_student = (Element)students.item(i);
String id = node_student.getAttribute("sid");
Node node_name = node_student.getElementsByTagName("name").item(0);
String name = node_name.getTextContent();
Element node_course = (Element)node_student.getElementsByTagName("course").item(0);
Node course_java = node_course.getElementsByTagName("java").item(0);
Node course_oracle = node_course.getElementsByTagName("oracle").item(0);
Node course_vb = node_course.getElementsByTagName("vb").item(0);
int score_java = Integer.parseInt(course_java.getTextContent());
int score_oracle = Integer.parseInt(course_oracle.getTextContent());
int score_vb = Integer.parseInt(course_vb.getTextContent());
Student student = new Student(id, name, score_java, score_oracle, score_vb);
array.add(student);
} return array;
} /**
* 根据ID获取一个学生的信息
* @param sid
* @return
*/
public static Student getStudentById(String sid){
NodeList students = document.getElementsByTagName("student");
for (int i = 0; i < students.getLength(); i++) {
Element node_student = (Element)students.item(i);
String id = node_student.getAttribute("sid");
if(!id.equals(sid)){
continue;
}
Node node_name = node_student.getElementsByTagName("name").item(0);
String name = node_name.getTextContent();
Element node_course = (Element)node_student.getElementsByTagName("course").item(0);
Node course_java = node_course.getElementsByTagName("java").item(0);
Node course_oracle = node_course.getElementsByTagName("oracle").item(0);
Node course_vb = node_course.getElementsByTagName("vb").item(0);
int score_java = Integer.parseInt(course_java.getTextContent());
int score_oracle = Integer.parseInt(course_oracle.getTextContent());
int score_vb = Integer.parseInt(course_vb.getTextContent());
Student student = new Student(id, name, score_java, score_oracle, score_vb);
return student;
} return null;
} /**
* 添加学生
* @param student
*/
public static void addStudent(Student student){
Element stu = document.createElement("student");
stu.setAttribute("sid", student.getId());
Element name = document.createElement("name");
name.setTextContent(student.getName());
Element course = document.createElement("course");
Element score_java = document.createElement("java");
Element score_oracle = document.createElement("oracle");
Element score_vb = document.createElement("vb");
score_java.setTextContent(String.valueOf(student.getScore_java()));
score_oracle.setTextContent(String.valueOf(student.getScore_oracle()));
score_vb.setTextContent(String.valueOf(student.getScore_vb()));
course.appendChild(score_java);
course.appendChild(score_oracle);
course.appendChild(score_vb);
stu.appendChild(name);
stu.appendChild(course);
document.getDocumentElement().appendChild(stu);
update(document, path);
} /**
* 根据ID删除一个学生
* @param sid
*/
public static void deleteStudentById(String sid){
NodeList students = document.getElementsByTagName("student");
for (int i = 0; i < students.getLength(); i++) {
Element student = (Element)students.item(i);
if(student.getAttribute("sid").equals(sid)){
student.getParentNode().removeChild(student);
}
}
update(document,path);
} /**
* 更新到文件
* @param document
* @param path
*/
public static void update(Document document,String path){ try{
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
transformer.transform(new DOMSource(document), new StreamResult(new File(path)));
}catch(Exception e){
e.printStackTrace();
}
}
}3. Write the main test program
Achieve a simple interface:
package com.dom.exercise;
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
boolean flag = true;
while(flag){
// 显示操作界面
System.console();
System.out.println("*********************操作界面*********************");
System.out.println("\t\t1.查询所有学生的成绩");
System.out.println("\t\t2.按照ID查询学生成绩 ");
System.out.println("\t\t3.添加一个学生");
System.out.println("\t\t4.按照ID删除一个学生");
System.out.println("\t\t0.退出系统");
System.out.println("************************************************");
// 获取用户的操作
String operate = scanner.next();
if ("1".equals(operate)) {
ArrayList<Student> students = StudentService.readAll();
System.out.println("所有的学生信息如下:");
System.out.println("Name\tID\tJava\tOracle\tVB");
for (Student student : students) {
System.out.println(student.getName() + "\t" + student.getId()
+ "\t" + student.getScore_java() + "\t"
+ student.getScore_oracle() + "\t"
+ student.getScore_vb());
}
}else if("2".equals(operate)){
System.out.println("请输入要查询的学生ID:");
String sid = scanner.next();
Student student = StudentService.getStudentById(sid);
System.out.println("学号为"+sid+"的学生的信息如下:");
System.out.println("Name\tID\tJava\tOracle\tVB");
System.out.println(student.getName() + "\t" + student.getId()
+ "\t" + student.getScore_java() + "\t"
+ student.getScore_oracle() + "\t"
+ student.getScore_vb());
}else if("3".equals(operate)){
System.out.println("请输入要添加的学生ID:");
String sid = scanner.next();
System.out.println("请输入要添加的学生姓名:");
String name = scanner.next();
System.out.println("请输入要添加的学生Java成绩:");
int score_java = Integer.parseInt(scanner.next());
System.out.println("请输入要添加的学生Oracle成绩:");
int score_oracle = Integer.parseInt(scanner.next());
System.out.println("请输入要添加的学生VB成绩:");
int score_vb = Integer.parseInt(scanner.next());
Student student = new Student(sid, name, score_java, score_oracle, score_vb);
StudentService.addStudent(student);
System.out.println("添加成功!");
}else if("4".equals(operate)){
System.out.println("请输入要删除的学生的ID:");
String sid = scanner.next();
StudentService.deleteStudentById(sid);
System.out.println("删除成功!");
}
System.out.println("是否继续?(Y/N)");
flag = scanner.next().trim().toLowerCase().equals("y")?true:false;
}
scanner.close();
}
}4. Running results 
The key to the problem is still DOM parsing XML and performing crud operations on XML.
[Title]: Implement a simple console program based on XML files, which can check student scores, add students, delete students, etc.
xml file is saved in the src/com/dom/exercise folder. Its format is as follows:
<?xml version="1.0" encoding="utf-8" standalone="no"?><students>
<student sid="001">
<name>小明</name>
<course>
<java>90</java>
<oracle>90</oracle>
<vb>93</vb>
</course>
</student>
<student sid="002">
<name>小李</name>
<course>
<java>78</java>
<oracle>86</oracle>
<vb>98</vb>
</course>
</student>
<student sid="003">
<name>小王</name>
<course>
<java>89</java>
<oracle>83</oracle>
<vb>95</vb>
</course>
</student></students>This can be said to be the simplest program, a little more complicated. It is implemented based on XML files, so DOM parsing must be used here. SAX cannot be used because SAX parsing can only read XML files and cannot update them.
1. First write StudentBean, as follows:
package com.dom.exercise;public class Student {
private String id = null;
private String name = null;
private int score_java;
private int score_oracle;
private int score_vb;
public Student() {
} public Student(String id, String name, int score_java, int score_oracle,
int score_vb) {
super();
this.id = id;
this.name = name;
this.score_java = score_java;
this.score_oracle = score_oracle;
this.score_vb = score_vb;
} public String getId() {
return id;
} public void setId(String id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public int getScore_java() {
return score_java;
} public void setScore_java(int score_java) {
this.score_java = score_java;
} public int getScore_oracle() {
return score_oracle;
} public void setScore_oracle(int score_oracle) {
this.score_oracle = score_oracle;
} public int getScore_vb() {
return score_vb;
} public void setScore_vb(int score_vb) {
this.score_vb = score_vb;
}
}2. Write the most critical StudentService class, which performs XML document Various operations
import java.util.ArrayList;
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.Node;
import org.w3c.dom.NodeList;
public class StudentService {
private static Document document = null;
private static String path = "src/com/dom/exercise/student.xml";
static{
try{
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
document = documentBuilder.parse(path);
}catch(Exception e){
System.out.println("初始化失败...");
e.printStackTrace();
}
} /**
* 获取所有学生信息
* @return
*/
public static ArrayList<Student> readAll(){
ArrayList<Student> array = new ArrayList<Student>();
NodeList students = document.getElementsByTagName("student");
for (int i = 0; i < students.getLength(); i++) {
Element node_student = (Element)students.item(i);
String id = node_student.getAttribute("sid");
Node node_name = node_student.getElementsByTagName("name").item(0);
String name = node_name.getTextContent();
Element node_course = (Element)node_student.getElementsByTagName("course").item(0);
Node course_java = node_course.getElementsByTagName("java").item(0);
Node course_oracle = node_course.getElementsByTagName("oracle").item(0);
Node course_vb = node_course.getElementsByTagName("vb").item(0);
int score_java = Integer.parseInt(course_java.getTextContent());
int score_oracle = Integer.parseInt(course_oracle.getTextContent());
int score_vb = Integer.parseInt(course_vb.getTextContent());
Student student = new Student(id, name, score_java, score_oracle, score_vb);
array.add(student);
} return array;
} /**
* 根据ID获取一个学生的信息
* @param sid
* @return
*/
public static Student getStudentById(String sid){
NodeList students = document.getElementsByTagName("student");
for (int i = 0; i < students.getLength(); i++) {
Element node_student = (Element)students.item(i);
String id = node_student.getAttribute("sid");
if(!id.equals(sid)){
continue;
}
Node node_name = node_student.getElementsByTagName("name").item(0);
String name = node_name.getTextContent();
Element node_course = (Element)node_student.getElementsByTagName("course").item(0);
Node course_java = node_course.getElementsByTagName("java").item(0);
Node course_oracle = node_course.getElementsByTagName("oracle").item(0);
Node course_vb = node_course.getElementsByTagName("vb").item(0);
int score_java = Integer.parseInt(course_java.getTextContent());
int score_oracle = Integer.parseInt(course_oracle.getTextContent());
int score_vb = Integer.parseInt(course_vb.getTextContent());
Student student = new Student(id, name, score_java, score_oracle, score_vb);
return student;
} return null;
} /**
* 添加学生
* @param student
*/
public static void addStudent(Student student){
Element stu = document.createElement("student");
stu.setAttribute("sid", student.getId());
Element name = document.createElement("name");
name.setTextContent(student.getName());
Element course = document.createElement("course");
Element score_java = document.createElement("java");
Element score_oracle = document.createElement("oracle");
Element score_vb = document.createElement("vb");
score_java.setTextContent(String.valueOf(student.getScore_java()));
score_oracle.setTextContent(String.valueOf(student.getScore_oracle()));
score_vb.setTextContent(String.valueOf(student.getScore_vb()));
course.appendChild(score_java);
course.appendChild(score_oracle);
course.appendChild(score_vb);
stu.appendChild(name);
stu.appendChild(course);
document.getDocumentElement().appendChild(stu);
update(document, path);
} /**
* 根据ID删除一个学生
* @param sid
*/
public static void deleteStudentById(String sid){
NodeList students = document.getElementsByTagName("student");
for (int i = 0; i < students.getLength(); i++) {
Element student = (Element)students.item(i);
if(student.getAttribute("sid").equals(sid)){
student.getParentNode().removeChild(student);
}
}
update(document,path);
} /**
* 更新到文件
* @param document
* @param path
*/
public static void update(Document document,String path){
try{
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
transformer.transform(new DOMSource(document), new StreamResult(new File(path)));
}catch(Exception e){
e.printStackTrace();
}
}
}3. Write the main test program
Achieve a simple interface:
package com.dom.exercise;import java.util.ArrayList;import java.util.Scanner;public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
boolean flag = true;
while(flag){
// 显示操作界面
System.console();
System.out.println("*********************操作界面*********************");
System.out.println("\t\t1.查询所有学生的成绩");
System.out.println("\t\t2.按照ID查询学生成绩 ");
System.out.println("\t\t3.添加一个学生");
System.out.println("\t\t4.按照ID删除一个学生");
System.out.println("\t\t0.退出系统");
System.out.println("************************************************");
// 获取用户的操作
String operate = scanner.next();
if ("1".equals(operate)) {
ArrayList<Student> students = StudentService.readAll();
System.out.println("所有的学生信息如下:");
System.out.println("Name\tID\tJava\tOracle\tVB");
for (Student student : students) {
System.out.println(student.getName() + "\t" + student.getId()
+ "\t" + student.getScore_java() + "\t"
+ student.getScore_oracle() + "\t"
+ student.getScore_vb());
}
}else if("2".equals(operate)){
System.out.println("请输入要查询的学生ID:");
String sid = scanner.next();
Student student = StudentService.getStudentById(sid);
System.out.println("学号为"+sid+"的学生的信息如下:");
System.out.println("Name\tID\tJava\tOracle\tVB");
System.out.println(student.getName() + "\t" + student.getId()
+ "\t" + student.getScore_java() + "\t"
+ student.getScore_oracle() + "\t"
+ student.getScore_vb());
}else if("3".equals(operate)){
System.out.println("请输入要添加的学生ID:");
String sid = scanner.next();
System.out.println("请输入要添加的学生姓名:");
String name = scanner.next();
System.out.println("请输入要添加的学生Java成绩:");
int score_java = Integer.parseInt(scanner.next());
System.out.println("请输入要添加的学生Oracle成绩:");
int score_oracle = Integer.parseInt(scanner.next());
System.out.println("请输入要添加的学生VB成绩:");
int score_vb = Integer.parseInt(scanner.next());
Student student = new Student(sid, name, score_java, score_oracle, score_vb);
StudentService.addStudent(student);
System.out.println("添加成功!");
}else if("4".equals(operate)){
System.out.println("请输入要删除的学生的ID:");
String sid = scanner.next();
StudentService.deleteStudentById(sid);
System.out.println("删除成功!");
}
System.out.println("是否继续?(Y/N)");
flag = scanner.next().trim().toLowerCase().equals("y")?true:false;
}
scanner.close();
}
}4. Running results 
The key to the problem is still DOM parsing XML and performing crud operations on XML.
The above is the content of the XML-DOM parsing case. For more related content, please pay attention to the PHP Chinese website (m.sbmmt.com)!
Hot AI Tools
Undress AI Tool
Undress images for free
AI Clothes Remover
Online AI tool for removing clothes from photos.
Undresser.AI Undress
AI-powered app for creating realistic nude photos
ArtGPT
AI image generator for creative art from text prompts.
Stock Market GPT
AI powered investment research for smarter decisions
Hot Article
Popular tool
Notepad++7.3.1
Easy-to-use and free code editor
SublimeText3 Chinese version
Chinese version, very easy to use
Zend Studio 13.0.1
Powerful PHP integrated development environment
Dreamweaver CS6
Visual web development tools
SublimeText3 Mac version
God-level code editing software (SublimeText3)
Hot Topics
20443
7
13592
4
XML Data Binding with Castor in Java
Aug 15, 2025 am 03:43 AM
CastorenablesXML-to-Javaobjectmappingviadefaultconventionsorexplicitmappingfiles;1)DefineJavaclasseswithgetters/setters;2)UseUnmarshallertoconvertXMLtoobjects;3)UseMarshallertoserializeobjectsbacktoXML;4)Forcomplexcases,configurefieldmappingsinmappin
What is the difference between window.onload and document.addEventListener('DOMContentLoaded')?
Jul 02, 2025 am 01:26 AM
The main difference between window.onload and DOMContentLoaded is the trigger timing. DOMContentLoaded is fired immediately after HTML parsing is completed, and does not wait for the stylesheet, picture and subframe to load; while window.onload waits for all resources (including pictures and external resources) to be loaded before execution. 1. Use DOMContentLoaded when the code only requires HTML structure to be ready, such as selecting elements, setting event listeners, or modifying the DOM tree; 2. Use window.onload when the script relies on all external resources to load, such as reading image sizes or preloading resources. Note: window.onload assignment
Parsing XML data in Python
Jul 09, 2025 am 02:28 AM
Processing XML data is common and flexible in Python. The main methods are as follows: 1. Use xml.etree.ElementTree to quickly parse simple XML, suitable for data with clear structure and low hierarchy; 2. When encountering a namespace, you need to manually add prefixes, such as using a namespace dictionary for matching; 3. For complex XML, it is recommended to use a third-party library lxml with stronger functions, which supports advanced features such as XPath2.0, and can be installed and imported through pip. Selecting the right tool is the key. Built-in modules are available for small projects, and lxml is used for complex scenarios to improve efficiency.
Working with XML attributes vs. elements: design choices
Sep 14, 2025 am 01:21 AM
UseattributesformetadatasuchasID,status,orunit,whichdescribetheelementbutarenotcorecontent,ensuringsimplicityandcompactnesswhendataisatomic.2.Useelementsforactualdatacontent,especiallywhenitmayrequirestructure,repetition,extensibility,orfuturenesting
Working with JSON and XML Serialization in C#
Jul 31, 2025 am 04:12 AM
The choice of JSON or XML depends on the application scenario: 1. The situation of using JSON includes WebAPI return data, front-end interaction, modern service communication, and lightweight configuration; 2. The situation of using XML includes legacy system compatibility, namespace support, document-based data structures, and enterprise-level application interface specifications. In C#, .NETCore uses System.Text.Json for JSON serialization by default, with better performance and supports formatted output and null value retention; XML is implemented through XmlSerializer, suitable for old projects, and can customize tag names and namespaces, but does not support circular references, and needs to be processed manually or replaced with other libraries. Rationally select and configure serialization methods to help deal with different developments
How to access and modify HTML elements using the DOM in JavaScript
Aug 16, 2025 am 11:25 AM
ToaccessandmodifyHTMLelementsusingJavaScript,firstselecttheelementusingmethodslikedocument.getElementById,document.querySelector,ordocument.querySelectorAll,thenalteritscontent,attributes,orstyles;forexample,useelement.textContentforsafetextupdates,e
A look at the SimpleXML library in PHP for easy XML manipulation
Jul 27, 2025 am 01:06 AM
SimpleXMListherighttoolforstraightforwardXMLmanipulationinPHP,asitconvertsXMLintoeasy-to-navigatePHPobjects.1.ItallowsloadingXMLfromastringorfileusingsimplexml_load_string()orsimplexml_load_file().2.Elementsareaccessedlikeobjectproperties,andattribut
A Guide to XML Canonicalization (C14N)
Aug 27, 2025 am 06:08 AM
XMLCanonicalization(C14N)solvestheproblemofsyntacticvariabilityinXMLbyensuringlogicallyequivalentdocumentsproduceidenticalbytesequences,whichiscriticalfordigitalsignaturesandsecurecomparisons.1.CanonicalXML(C1.0)providesfullnormalizationwithattribute





