【题目】:基于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解析案例的内容。
