您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

XML—DOM解析案例

2025/12/11 9:57:46发布24次查看
【题目】:基于xml文件实现一个简易的控制台程序,可以查看学生成绩,添加学生,删除学生等。
xml文件保存在src/com/dom/exercise文件夹下,它的格式如下:
<?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>
这个可以说是最简单的程序了,稍微复杂的一点是它要基于xml文件来实现,所以这里肯定要使用dom解析,sax不能用是因为sax解析只能读取xml文件而不能更新。
1.首先编写studentbean,如下:
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.编写最关键的studentservice类,它对xml文档进行各种操作
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.编写主测试程序
实现简易界面:
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.运行结果
问题的关键仍是dom解析xml,对xml进行crud操作。
【题目】:基于xml文件实现一个简易的控制台程序,可以查看学生成绩,添加学生,删除学生等。
xml文件保存在src/com/dom/exercise文件夹下,它的格式如下:
<?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>
这个可以说是最简单的程序了,稍微复杂的一点是它要基于xml文件来实现,所以这里肯定要使用dom解析,sax不能用是因为sax解析只能读取xml文件而不能更新。
1.首先编写studentbean,如下:
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.编写最关键的studentservice类,它对xml文档进行各种操作
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.编写主测试程序
实现简易界面:
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.运行结果
问题的关键仍是dom解析xml,对xml进行crud操作。
以上就是xml—dom解析案例的内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product