JAXP Dom 案例 对xml文件进行增加 查找 删除
利用 JAXP 对 XML文件 的处理,把xml当做一个数据库来对待
aaarticlea/png;base64,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" alt="" />
Student对象定义类
public class Student { private String idcard;//身份证号 private String examid;//准考证号 private String name;//姓名 private String location;//籍贯 private float grade;//成绩 public Student(){} public Student(String idcard, String examid, String name, String location, float grade) { super(); this.idcard = idcard; this.examid = examid; this.name = name; this.location = location; this.grade = grade; } public String getIdcard() { return idcard; } public void setIdcard(String idcard) { this.idcard = idcard; } public String getExamid() { return examid; } public void setExamid(String examid) { this.examid = examid; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getLocation() { return location; } public void setLocation(String location) { this.location = location; } public float getGrade() { return grade; } public void setGrade(float grade) { this.grade = grade; } @Override public String toString() { return "Student [idcard=" + idcard + ", examid=" + examid + ", name=" + name + ", location=" + location + ", grade=" + grade + "]"; } }
StudentDao 接口类
//原则:抽象和实现分离
//根据功能要求
//接口中的每个方法:注释要写的清清楚楚,做到没有歧义
public interface StudentDao { /** * 添加学生信息到数据库 * @param s 封装了要保存的信息的学生对象 * @return 成功了返回true,否则false */ boolean addStudent(Student s); /** * 根据准考证号查询学生的信息 * @param examid 准考证号 * @return 没有找到返回null */ Student findByExamid(String examid); /** * 根据姓名删除学生信息 * @param name 学生的姓名 * @return 删除成功返回true。删除失败或学生不存在都返回false */ boolean delStudentByName(String name); }
StudentDaoimpl 实现类
public class StudentDaoImpl implements StudentDao { public boolean addStudent(Student s) { boolean result = false; try { //得到Document对象 Document doc = JaxpUtil.getDocument();//异常怎么办?抛:调用者得有能力处理。处理 //创建<student>:设置属性 Element studentE = doc.createElement("student");//<student></student> studentE.setAttribute("idcard", s.getIdcard()); studentE.setAttribute("examid", s.getExamid());//<student idcard="370101" examid="438"> //依次创建<name><location><grade>并设置主体内容 Element nameE = doc.createElement("name");//<name></name> nameE.setTextContent(s.getName());// <name>郭美美</name> Element locationE = doc.createElement("location"); locationE.setTextContent(s.getLocation()); Element gradeE = doc.createElement("grade"); gradeE.setTextContent(s.getGrade()+""); //建立与student元素的父子关系 studentE.appendChild(nameE); studentE.appendChild(locationE); studentE.appendChild(gradeE); //把student挂接到根元素上 Node rootNode = doc.getElementsByTagName("exam").item(0); rootNode.appendChild(studentE); //写回xml文档中 JaxpUtil.write2xml(doc); result = true; } catch (Exception e) { throw new RuntimeException(e);//编译时异常--》运行时异常:异常转义;异常链 } return result; } public Student findByExamid(String examid) { Student s = null; try { //得到Document对象 Document doc = JaxpUtil.getDocument(); //得到所有的<student>元素 NodeList nl = doc.getElementsByTagName("student"); //遍历:判断属性的值和参数的值是否相等 for(int i=0;i<nl.getLength();i++){ //相等:读取属性和子元素的文本,封装到Student对象中 Node node = nl.item(i); if(node.getNodeType()==Node.ELEMENT_NODE){ Element e = (Element)node; if(e.getAttribute("examid").equals(examid)){ s = new Student(); s.setIdcard(e.getAttribute("idcard")); s.setExamid(examid); s.setName(e.getElementsByTagName("name").item(0).getTextContent()); s.setLocation(e.getElementsByTagName("location").item(0).getTextContent()); s.setGrade(Float.parseFloat(e.getElementsByTagName("grade").item(0).getTextContent())); break; } } } //返回数据 } catch (Exception e) { throw new RuntimeException(e);//编译时异常--》运行时异常:异常转义;异常链 } return s; } public boolean delStudentByName(String name) { boolean result = false; try { //得到Document对象 Document doc = JaxpUtil.getDocument(); //得到所有的name元素 NodeList nl = doc.getElementsByTagName("name"); //遍历:判断元素的文本和参数是否相等 for(int i=0;i<nl.getLength();i++){ Node node = nl.item(i); if(node.getTextContent().equals(name)){ //如果是:爷爷干掉爸爸 node.getParentNode().getParentNode().removeChild(node.getParentNode()); //写回xml文档 JaxpUtil.write2xml(doc); //设置标记为true result = true; } } } catch (Exception e) { throw new RuntimeException(e);//编译时异常--》运行时异常:异常转义;异常链 } return result; } }
JavaUtil
//工具类
//异常可以处理:不给调用者添麻烦
//可以抛:谁用谁处理
public class JaxpUtil { public static Document getDocument() throws ParserConfigurationException, SAXException, IOException{ DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = dbf.newDocumentBuilder();//异常怎么办?哲学问题 Document document = builder.parse("src/exam.xml"); return document; } public static void write2xml(Document document) throws TransformerException{ TransformerFactory tf = TransformerFactory.newInstance(); Transformer ts = tf.newTransformer(); ts.transform(new DOMSource(document), new StreamResult("src/exam.xml")); } }
StudentDaoImplTest 测试类
public class StudentDaoImplTest { public static void main(String[] args) { StudentDao dao = new StudentDaoImpl(); // Student s = new Student(); // s.setExamid("999"); // s.setIdcard("1101"); // s.setName("牛骞"); // s.setLocation("河南"); // s.setGrade(100); // dao.addStudent(s); Student s = dao.findByExamid("999"); System.out.println(s); // boolean b = dao.delStudentByName("牛骞"); // System.out.println(b); }
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
Normal
0
7.8 磅
0
2
false
false
false
EN-US
ZH-CN
X-NONE
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:"Times New Roman",serif;}
JAXP Dom 案例 对xml文件进行增加 查找 删除的更多相关文章
- 用JAXP的dom方式解析XML文件
用JAXP的dom方式解析XML文件,实现增删改查操作 dom方式解析XML原理 XML文件 <?xml version="1.0" encoding="UTF-8 ...
- 在iOS 开发中用GDataXML(DOM方式)解析xml文件
因为GDataXML的内部实现是通过DOM方式解析的,而在iOS 开发中用DOM方式解析xml文件,这个时候我们需要开启DOM,因为ios 开发中是不会自动开启的,只有在mac 开发中才自动开启的.我 ...
- python3之对本地TXT文件进行增加,删除,修改,查看功能。
由于是初学,代码如有不足,欢迎指出! 本博客记录我的编程之路,记录所学到的知识,分享所学心得! 这是我的一个作业. 首先分析要求: 创建一个TXT文件用于存储账号与密码 实现对文件进行增加,删除,修改 ...
- 初学DOM树解析xml文件
做了一次设计模式实验的题目: 某软件公司为新开发的智能手机控制与管理软件提供了一键备份功能,通过该功能可以将原本存储在手机中的通信录.短信.照片.歌曲等资料一次性全部拷贝到移动存储介质(例如MMC卡或 ...
- DOM方式解析XML文件实例
books.XML文件: <?xml version="1.0" encoding="utf-8"?><bookstore> &l ...
- Java-Web DOM方式解析xml文件
XML DOM 树形结构: DOM 节点 根据 DOM,XML 文档中的每个成分都是一个节点. DOM 是这样规定的: 整个文档是一个文档节点 每个 XML 元素是一个元素节点 包含在 XML 元素中 ...
- XML:使用DOM技术解析xML文件中的城市,实现select级联选择
中国的城市xml格式:cities.xml <?xml version="1.0" encoding="utf-8"?> <china> ...
- Python中使用dom模块生成XML文件示例
在Python中解析XML文件也有Dom和Sax两种方式,这里先介绍如何是使用Dom解析XML,这一篇文章是Dom生成XML文件,下一篇文章再继续介绍Dom解析XML文件. 在生成XML文件中,我们主 ...
- Java&Xml教程(四)使用DOM方式生成XML文件
在前面的教程中,我们学习了使用DOM解析方式读取和修改XML文件内容,今天我们来学习如何使用DOM解析机制生成XML文件. 下面是我们对要生成的XML文件的具体要求: 1.根节点元素为"Em ...
随机推荐
- 元类(meta class)
元类(meta class),这个名字想必很多人都听过,网上也有很多关于元类的介绍,今天我就按照自己这两天的理解来简单探讨一下这个玩意,有误之处还望指出. 首先,下载objc源码,源码地址:https ...
- [原创]KVM虚拟化实践记录
一.KVM简介KVM是开源软件,全称是kernel-based virtual machine(基于内核的虚拟机),是一个开源的系统虚拟化模块,基于硬件的完全虚拟化,不过需要硬件支持(如Intel V ...
- 由Find All References引发的思考。,
今天在研究C#代码问题的时候遇到了一个Visual Studio的小问题.在Visual Studio 2013中,使用Find All References功能不能找到同一类型不同版本的所有引用,具 ...
- python内置的全局变量
print(__doc__) # 文件注释print(__file__) # 当前文件的绝对路径print(__package__) # 当前文件所在的包 当前文件: None 导入其他的文件:指定文 ...
- numpy中linspace用法 (等差数列创建函数)
linspace 函数 是创建等差数列的函数, 最好是在 Matlab 语言中见到这个函数的,近期在学习Python 中的 Numpy, 发现也有这个函数,以下给出自己在学习过程中的一些总结. ( ...
- 百度导航试用 vs 高德导航
听说百度导航免费了,下载试用了一下: HUD模式不错,但是需要一个手机支架或挂钩.尤其是HUD景象模式,夜间把手机平放,通过前挡风玻璃反射看.这个功能有点乔布斯的感觉了. 不过路径规划还差一点,和凯立 ...
- {新人笔记 勿看} spring mvc第一步
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...
- ASP.NET MVC5(三):表单和HTML辅助方法
表单的使用 Action和Method特性 Action特性用以告知浏览器信息发往何处,因此,Action特性后面需要包含一个Url地址.这里的Url地址可以是相对的,也可以是绝对的.如下Form标签 ...
- TypeScript技巧集锦(陆续更新)
在C++项目中编译TypeScript(以下简称ts) 编辑ts文件的属性,项类型选择"自定义生产工具". 命令行输入tsc所在位置与编译参数,我的是"C:\Progra ...
- Web设计思想——渐进增强
最近在拜读一本Web体验相关的书<渐进增强--跨平台用户体验设计 >,阅读后做些总结,消化一下书中的精髓. 在阅读本文前,可以先思考下面几个问题. 1. 浏览网页的目的是什么? 2. 浏览 ...