栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 人工智能 > NLP

XML—DOM解析案例

NLP 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

XML—DOM解析案例

【题目】:基于XML文件实现一个简易的控制台程序,可以查看学生成绩,添加学生,删除学生等。

xml文件保存在src/com/dom/exercise文件夹下,它的格式如下:

            小明                    90            90            93                        小李                    78            86            98                        小王                    89            83            95            

这个可以说是最简单的程序了,稍微复杂的一点是它要基于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();        }    }        public static ArrayList readAll(){        ArrayList array = new ArrayList();        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;    }        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;    }        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);    }        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);    }        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("tt1.查询所有学生的成绩");            System.out.println("tt2.按照ID查询学生成绩 ");            System.out.println("tt3.添加一个学生");            System.out.println("tt4.按照ID删除一个学生");            System.out.println("tt0.退出系统");            System.out.println("************************************************");                        // 获取用户的操作            String operate = scanner.next();                        if ("1".equals(operate)) {                ArrayList students = StudentService.readAll();                System.out.println("所有的学生信息如下:");                System.out.println("NametIDtJavatOracletVB");                                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("NametIDtJavatOracletVB");                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文件夹下,它的格式如下:

            小明                    90            90            93                        小李                    78            86            98                        小王                    89            83            95            

这个可以说是最简单的程序了,稍微复杂的一点是它要基于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();        }    }        public static ArrayList readAll(){        ArrayList array = new ArrayList();        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;    }        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;    }        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);    }        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);    }        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("tt1.查询所有学生的成绩");            System.out.println("tt2.按照ID查询学生成绩 ");            System.out.println("tt3.添加一个学生");            System.out.println("tt4.按照ID删除一个学生");            System.out.println("tt0.退出系统");            System.out.println("************************************************");                        // 获取用户的操作            String operate = scanner.next();                        if ("1".equals(operate)) {                ArrayList students = StudentService.readAll();                System.out.println("所有的学生信息如下:");                System.out.println("NametIDtJavatOracletVB");                                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("NametIDtJavatOracletVB");                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解析案例的内容,更多相关内容请关注PHP中文网(www.kaotop.com)!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/794783.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号