【题目】:基于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解析案例的内容,更多相关内容请关注PHP中文网(www.php.cn)!

Dokumen RSS adalah fail berstruktur berasaskan XML yang digunakan untuk menerbitkan dan melanggan kandungan yang sering dikemas kini. Fungsi utamanya termasuk: 1) kemas kini kandungan automatik, 2) pengagregatan kandungan, dan 3) meningkatkan kecekapan pelayaran. Melalui RSSFEED, pengguna boleh melanggan dan mendapatkan maklumat terkini dari sumber yang berbeza tepat pada masanya.

Struktur XML RSS termasuk: 1. XML Deklarasi dan versi RSS, 2. Saluran (saluran), 3. Item. Bahagian ini membentuk asas fail RSS, yang membolehkan pengguna mendapatkan dan memproses maklumat kandungan dengan menghuraikan data XML.

Rssfeedsusexmltosyndicatecontent; parsingtheminvolvesloadingxml, navigatingitssstructure, andextractingdata.applicationsincludeBuildingNewsaggregatorsandtrackingpodcastepisodes.

Dokumen RSS berfungsi dengan menerbitkan kemas kini kandungan melalui fail XML, dan pengguna melanggan dan menerima pemberitahuan melalui pembaca RSS. 1. Penerbit Kandungan mencipta dan mengemas kini dokumen RSS. 2. Pembaca RSS kerap mengakses dan memasangkan fail XML. 3. Pengguna melayari dan membaca kandungan yang dikemas kini. Contoh Penggunaan: Langgan suapan RSS TechCrunch, hanya salin pautan ke pembaca RSS.

Langkah -langkah untuk membina RSSFeed menggunakan XML adalah seperti berikut: 1. Buat elemen akar dan tetapkan versi; 2. Tambah elemen saluran dan maklumat asasnya; 3. Tambah elemen kemasukan, termasuk tajuk, pautan dan keterangan; 4. Tukar struktur XML ke rentetan dan outputnya. Dengan langkah -langkah ini, anda boleh membuat RSSFeed yang sah dari awal dan meningkatkan fungsinya dengan menambahkan elemen tambahan seperti tarikh pelepasan dan maklumat pengarang.

Langkah -langkah untuk membuat dokumen RSS adalah seperti berikut: 1. Tulis dalam format XML, dengan elemen akar, termasuk unsur -unsur. 2. Tambah, dan sebagainya. Unsur untuk menerangkan maklumat saluran. 3. Tambah elemen, masing -masing mewakili kemasukan kandungan, termasuk ,,,,,,,,,,,. 4. Secara pilihan menambah dan elemen untuk memperkayakan kandungan. 5. Pastikan format XML betul, gunakan alat dalam talian untuk mengesahkan, mengoptimumkan prestasi dan menyimpan kandungan yang dikemas kini.

Peranan teras XML dalam RSS adalah untuk menyediakan format data standard dan fleksibel. 1. Ciri -ciri bahasa dan markup XML menjadikannya sesuai untuk pertukaran data dan penyimpanan. 2. RSS menggunakan XML untuk membuat format piawai untuk memudahkan perkongsian kandungan. 3. Permohonan XML dalam RSS termasuk unsur -unsur yang menentukan kandungan suapan, seperti tajuk dan tarikh pelepasan. 4. Kelebihan termasuk penyeragaman dan skalabiliti, dan cabaran termasuk keperluan sintaks dokumen dan ketat. 5. Amalan terbaik termasuk mengesahkan kesahihan XML, memastikan ia mudah, menggunakan CDATA, dan sentiasa mengemas kini.

Rssfeedsarexmldocumentsedforcontentaggregationanddistribution.totransformthemintoreadableContent: 1) ParsethexmlusingLibrariesLikeFeedParserinpython.2)


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Versi Mac WebStorm
Alat pembangunan JavaScript yang berguna

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

Muat turun versi mac editor Atom
Editor sumber terbuka yang paling popular

SecLists
SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.

Penyesuai Pelayan SAP NetWeaver untuk Eclipse
Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.