javaweb学习总结十三(dom4j方式对XML文档进行解析)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javaweb学习总结十三(dom4j方式对XML文档进行解析)相关的知识,希望对你有一定的参考价值。

一:dom4j方式介绍

对于xml的解析总共有三种

1:jaxp方式,是sun公司开发的,分为sax方式和dom方式

2:jdom方式,后来其中部分人员参与开发dom4j

3:dom4j方式,是现在企业使用比较多的一种方式

技术分享

 

二:代码案例

1:读取xml文件中某个节点

1):获取第二个学生的名字

 1 @Test
 2     // 1:获取第二个学生的名字
 3     public void test01() throws DocumentException {
 4         // 1:获取解析器
 5         SAXReader reader = new SAXReader();
 6         // 2:获取doc文档
 7         Document doc = reader.read(new File("xml/exam.xml"));
 8         // 3:获取根元素
 9         Element root = doc.getRootElement();
10         // 4:获取所有的学生节点
11         List list = root.elements("student");
12         Element student = (Element) list.get(1);
13         String name = student.element("name").getText();
14         System.out.println(name);
15     }

2):获取第2个学生的属性名和值

 1 @Test
 2     // 2:获取第2个学生的属性名和值
 3     public void test02() throws DocumentException {
 4         // 1:获取解析器
 5         SAXReader reader = new SAXReader();
 6         // 2:获取doc文档
 7         Document doc = reader.read(new File("xml/exam.xml"));
 8         // 3:获取根元素
 9         Element root = doc.getRootElement();
10         // 4:获取所有的学生节点
11         List list = root.elements("student");
12         Element student = (Element) list.get(1);
13         // String value = student.element("name").attribute("sid").getValue();
14         String value = student.element("name").attributeValue("sid");
15         System.out.println("sid:" + value);
16     }

2:向xml文档中添加节点

 1 @Test
 2     // 3:向第一个学生添加学分节点
 3     public void test03() throws DocumentException,
 4             IOException {
 5         // 1:获取解析器
 6         SAXReader reader = new SAXReader();
 7         // 2:获取doc文档
 8         Document doc = reader.read(new File("xml/exam.xml"));
 9         // 3:获取根元素
10         Element root = doc.getRootElement();
11         // 4:获取所有的学生节点
12         Element student = root.element("student");
13         student.addElement("score").setText("100");
14 
15         // 5:将内存中的内容写入xml文件中
16         XMLWriter writer = new XMLWriter(new FileOutputStream("xml/exam.xml"));
17         writer.write(doc);
18         writer.flush();
19         writer.close();
20     }

3:向指定位置添加节点

这里要遍历修改添加节点的父类得到list集合,然后将节点

添加到list集合的具体位置。

 1 @Test
 2     // 4:向指定位置添加节点(在第二个学生的年龄元素后面添加节点)
 3     public void test04() throws DocumentException, IOException {
 4         // 1:获取解析器
 5         SAXReader reader = new SAXReader();
 6         // 2:获取doc文档
 7         Document doc = reader.read(new File("xml/exam.xml"));
 8         // 3:获取根元素
 9         Element root = doc.getRootElement();
10         // 4:获取第二个学生节点
11         Element student = (Element) root.elements("student").get(1);
12         List list = student.elements();
13 
14         // 创建分数节点
15         Element score = DocumentHelper.createElement("score");
16         score.setText("100");
17         // 将节点添加到学生节点
18         list.add(2, score);
19 
20         // 将内存document写入xml
21         XMLWriter writer = new XMLWriter(new FileOutputStream("xml/exam.xml"));
22         writer.write(doc);
23         writer.close();
24     }

4:删除节点

得到删除节点以及父节点,然后就可以操作了,比较简单

 1 @Test
 2     // 删除上一步添加的几点
 3     public void test05() throws DocumentException, IOException,
 4             FileNotFoundException {
 5         // 1:获取解析器
 6         SAXReader reader = new SAXReader();
 7         // 2:获取doc文档
 8         Document doc = reader.read(new File("xml/exam.xml"));
 9         // 3:获取根元素
10         Element root = doc.getRootElement();
11         // 4:获取第二个学生节点
12         Element student = (Element) root.elements("student").get(1);
13         Element score = student.element("score");
14         student.remove(score);
15 
16         // 将内存document写入xml
17         XMLWriter writer = new XMLWriter(new FileOutputStream("xml/exam.xml"));
18         writer.write(doc);
19         writer.close();
20     }

5:修改节点内容

 1 @Test
 2     // 修改第二个学生的性别
 3     public void test06() throws DocumentException, IOException {
 4         SAXReader reader = new SAXReader();
 5         Document doc = reader.read(new File("xml/exam.xml"));
 6 
 7         Element root = doc.getRootElement();
 8         Element student = (Element) root.elements("student").get(1);
 9         Element stuGender = student.element("gender");
10         stuGender.setText("男");
11 
12         // 将内存document写入xml
13         XMLWriter writer = new XMLWriter(new FileOutputStream("xml/exam.xml"));
14         writer.write(doc);
15         writer.close();
16     }

6:修改节点属性值

 1 @Test
 2     // 修改节点的属性(修改第二个学生的sid属性为345)
 3     public void test07() throws DocumentException, IOException {
 4         SAXReader reader = new SAXReader();
 5         Document doc = reader.read(new File("xml/exam.xml"));
 6 
 7         Element root = doc.getRootElement();
 8         Element student = (Element) root.elements("student").get(1);
 9         Attribute attr  = student.attribute("sid");
10         attr.setValue("345");
11 
12         // 将内存document写入xml
13         XMLWriter writer = new XMLWriter(new FileOutputStream("xml/exam.xml"));
14         writer.write(doc);
15         writer.close();
16     }

 

以上是关于javaweb学习总结十三(dom4j方式对XML文档进行解析)的主要内容,如果未能解决你的问题,请参考以下文章

JavaWeb--XML的解析

XML编程总结——使用dom4j方式操作xml

javaweb学习总结十二(JAXP对XML文档进行SAX解析)

javaweb学习总结十一(JAX对XML文档进行DOM解析)

JavaWeb学习总结(十三)——使用Session防止表单重复提交

JavaWeb学习总结(十三)——使用Session防止表单重复提交