JavaWeb——XML入门(二)

简介: JavaWeb——XML入门(二)

DOM4j:


20190919111458357.png


DOM4j遍历XML:首先将 dom4j-2.2.1.jar包 add path到工程中


测试代码:

package com.imooc.dom4j;
import java.util.List;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class HrReader {
  //读取XML文件方法
  public void readXml(){
  String file = "/Users/lcs/eclipse-workspace/xml/src/hr.xml";
  //SAXReader类是读取XML文件的核心类,用于将XML解析后以“树”的形式保存在内存中
  SAXReader reader = new SAXReader(); 
  try {
    Document document = reader.read(file);
    //获取XML文档的根节点,即hr标签
    Element root = document.getRootElement();
    //elements方法用于获取指定的标签集合
    List<Element> employees = root.elements("employee");
    for(Element employee:employees) {
    //element()用于获取唯一的子节点对象
    Element name = employee.element("name");
    //getText()标签用于获取标签文本 
    String empName = name.getText();
    System.out.print(empName);
    //获取属性
    Attribute att = employee.attribute("no");
    System.out.println("  工号:"+att.getText()); 
    System.out.println(employee.elementText("age"));
    System.out.println(employee.elementText("salary"));
    Element department = employee.element("department");
    System.out.println(department.element("dname").getText());
    System.out.println(department.element("address").getText());
    System.out.println("================");
    }
  } catch (DocumentException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
  }
  }
  public static void main(String[] args) {
  HrReader reader = new HrReader();
  reader.readXml();
  }
}


输出结果:

张三  工号:3309
30
4000
会计部
XX-大厦-B103
================
莉丝  工号:3310
30
5000
工厂部
XX-大厦-B104
================


DOM4j更新XML:写入一个人员信息到hr.xml中

package com.imooc.dom4j;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class HrWriter {
  public void writeXml() {
  String file = "/Users/lcs/eclipse-workspace/xml/src/hr.xml";
  // SAXReader类是读取XML文件的核心类,用于将XML解析后以“树”的形式保存在内存中
  SAXReader reader = new SAXReader();
  try {
    Document document = reader.read(file);
    // 获取XML文档的根节点,即hr标签
    Element root = document.getRootElement();
    // addElement()方法用于创造一个传入参数类型的元素
    Element employee = root.addElement("employee");
    // 然后在新建的employee上增加属性
    employee.addAttribute("no", "3311");
    // 增加子节点
    Element name = employee.addElement("name");
    name.setText("王五");
    employee.addElement("age").setText("37");
    employee.addElement("salary").setText("9000");
    Element department = employee.addElement("department");
    department.addElement("dname").setText("人事部");
    department.addElement("address").setText("XX-大厦-A108");
    // 已经在内存中完成了编写,接下来将其导入到XML文件
    Writer writer = new OutputStreamWriter(new FileOutputStream(file), "UTF-8");
    document.write(writer);
    writer.close();
  } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
  }
  }
  public static void main(String[] args) {
  HrWriter hrWriter = new HrWriter();
  hrWriter.writeXml();
  }
}


查看hr.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hr SYSTEM "hr.dtd"><!-- 人力资源管理系统 -->
<hr>
  <employee no="3309">
  <name>张三</name>
  <age>30</age>
  <salary>4000</salary>
  <department>
    <dname>会计部</dname>
    <address>XX-大厦-B103</address>
  </department>
  </employee>
  <employee no="3310">
  <name>莉丝</name>
  <age>30</age>
  <salary>5000</salary>
  <department>
    <dname>工厂部</dname>
    <address>XX-大厦-B104</address>
  </department>
  </employee>
  <employee no="3311">
  <name>王五</name>
  <age>37</age>
  <salary>9000</salary>
  <department>
    <dname>人事部</dname>
    <address>XX-大厦-A108</address>
  </department>
  </employee>
</hr>



案例测试


20190919111802725.png

写入代码:

package com.imooc.dom4j;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class Plan2Writer {
  public void writeXml() {
  String file = "/Users/lcs/eclipse-workspace/xml/src/plan2.xml";
  // SAXReader类是读取XML文件的核心类,用于将XML解析后以“树”的形式保存在内存中
  SAXReader reader = new SAXReader();
  try {
    Document document = reader.read(file);
    // 获取XML文档的根节点,即course标签
    Element root = document.getRootElement();
    // addElement()方法用于创造一个传入参数类型的元素
    Element employee = root.addElement("course");
    // 增加子节点
    Element name = employee.addElement("course-name");
    name.setText("历史");
    employee.addElement("class-hour").setText("50");
    employee.addElement("exam-form").setText("考试");
    // 已经在内存中完成了编写,接下来将其导入到XML文件
    Writer writer = new OutputStreamWriter(new FileOutputStream(file), "UTF-8");
    document.write(writer);
    writer.close();
  } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
  }
  }
  public static void main(String[] args) {
  Plan2Writer plan2Writer = new Plan2Writer();
  plan2Writer.writeXml();
  }
}


打开plan.xml:格式化后结果为

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plan SYSTEM "plan.dtd">
<teaching-plan>
  <course>
  <course-name>大学英语</course-name>
  <class-hour>36</class-hour>
  <exam-form>考试</exam-form>
  </course>
  <course>
  <course-name>高等数学</course-name>
  <class-hour>70</class-hour>
  <exam-form>考试</exam-form>
  </course>
  <course>
  <course-name>计算机应用基础</course-name>
  <class-hour>108</class-hour>
  <exam-form>上机考试</exam-form>
  </course>
  <course>
  <course-name>历史</course-name>
  <class-hour>50</class-hour>
  <exam-form>考试</exam-form>
  </course>
</teaching-plan>


XPath的使用


Xpath是一个结合DOM4J使用的技术,XPath能够根据字符串,快速定位符合条件的标签

用dom4j+xpath技术,快速定位xml文件中的标签,并取出内容,

导入dom4j中xpath的jar包到classpath中去,

xpath也属于dom4j技术

//第一个/表示xml文件,其它/表示分隔符; 
String xpath = "/电视/a/b/c/d";
Element dElement = (Element) xmlDocument.selectStringleNOde();
List<Element> list = xmlDocument.selectNodes(xpath);
目录
相关文章
|
3月前
|
XML Java 数据格式
Spring5入门到实战------7、IOC容器-Bean管理XML方式(外部属性文件)
这篇文章是Spring5框架的实战教程,主要介绍了如何在Spring的IOC容器中通过XML配置方式使用外部属性文件来管理Bean,特别是数据库连接池的配置。文章详细讲解了创建属性文件、引入属性文件到Spring配置、以及如何使用属性占位符来引用属性文件中的值。
Spring5入门到实战------7、IOC容器-Bean管理XML方式(外部属性文件)
|
28天前
|
XML 前端开发 Java
XML基本概念入门学习指南
XML(eXtensible Markup Language)是一种可扩展的标记语言,和HTML语言语法类似,同属于标记语言。
|
5月前
|
XML Java 数据库连接
MyBatis入门——MyBatis XML配置文件(3)
MyBatis入门——MyBatis XML配置文件(3)
73 6
|
3月前
|
XML Java 数据格式
Spring5入门到实战------11、使用XML方式实现AOP切面编程。具体代码+讲解
这篇文章是Spring5框架的AOP切面编程教程,通过XML配置方式,详细讲解了如何创建被增强类和增强类,如何在Spring配置文件中定义切入点和切面,以及如何将增强逻辑应用到具体方法上。文章通过具体的代码示例和测试结果,展示了使用XML配置实现AOP的过程,并强调了虽然注解开发更为便捷,但掌握XML配置也是非常重要的。
Spring5入门到实战------11、使用XML方式实现AOP切面编程。具体代码+讲解
|
3月前
|
XML Java 数据格式
Spring5入门到实战------6、IOC容器-Bean管理XML方式(自动装配)
这篇文章是Spring5框架的入门教程,详细讲解了IOC容器中Bean的自动装配机制,包括手动装配、`byName`和`byType`两种自动装配方式,并通过XML配置文件和Java代码示例展示了如何在Spring中实现自动装配。
Spring5入门到实战------6、IOC容器-Bean管理XML方式(自动装配)
|
3月前
|
XML Java 数据库
Spring5入门到实战------15、事务操作---概念--场景---声明式事务管理---事务参数--注解方式---xml方式
这篇文章是Spring5框架的实战教程,详细介绍了事务的概念、ACID特性、事务操作的场景,并通过实际的银行转账示例,演示了Spring框架中声明式事务管理的实现,包括使用注解和XML配置两种方式,以及如何配置事务参数来控制事务的行为。
Spring5入门到实战------15、事务操作---概念--场景---声明式事务管理---事务参数--注解方式---xml方式
|
6月前
|
XML 安全 Java
从零手写实现 apache Tomcat-02-web.xml 入门详细介绍
`web.xml`是Java Web应用的核心配置文件,描述应用工作方式。它包含Servlet、Filter和Listener的定义。例如,示例展示了如何配置名为`my`的Servlet处理`/my`请求,`LoggingFilter`拦截所有请求,以及`MyServletContextAttrListener`监听应用事件。`web.xml`是服务器理解应用结构与行为的指南。迷你版Tomcat实现——mini-cat(开源:https://github.com/houbb/minicat)。
|
6月前
|
XML Java 数据库连接
Javaweb之Mybatis的XML配置文件的详细解析
Javaweb之Mybatis的XML配置文件的详细解析
75 0
|
6月前
javaWeb服务详解(含源代码,测试通过,注释) ——web.xml
javaWeb服务详解(含源代码,测试通过,注释) ——web.xml
|
6月前
javaWeb服务详解(含源代码,测试通过,注释) ——applicationContext.xml
javaWeb服务详解(含源代码,测试通过,注释) ——applicationContext.xml