XML解析

  1. 掌握 properties 配置文件的三种配置位置及读取方式(重点)

  2. 了解XML的作用

  3. 熟练使用dom4j + xpath解析xml文件(重点)

  4. 数据库连接池技术(自学)
    JDBC 数据库连接池技术 Pool

    C3P0
    druid
    H

debug log4j日志功能

1. XML的作用
1.1 传输数据
xml
webservice(比如天气、手机…)
json
http+json

1.2 存储数据(配置文件,如web.xml)
*.properties
*.xml

2. Java中 配置文件的三种配置位置及读取方式
2.1 配置的两种形式:
XML
*.properties(属性文件)
2.2 存放位置
2.2.1 src根目录下
Xxx.class.getResourceAsStream("/config.properties");

 2.2.2 与读取配置文件的类在同一包
      Xxx.class.getResourceAsStream("config.properties");

 2.2.3 WEB-INF(或其子目录下)
      ServletContext application = this.getServletContext();
  InputStream is = application.getResourceAsStream("/WEB-INF/config.properties");

 注1:*.properties文件
key=value
#注释
Properties.load(is)加载properties文件。
properties里面存放的是配置信息(数据)。

3. dom4j + xpath 解析xml文件
xml解析一般分自带源生态的(效率低),另一种使用第三方读取解析(dom4j)。

3.1 dom4j:dom4j是java中一个优秀的开源框架,它提供了一组API用来解析xml文件。

优点:开源、轻量级、灵活、高性能、高效率、易维护。
          常用于解析大型XML文档。
思想:将xml中所有元素(Element)称之为节点(Node),一个xml文件由N个节点组成。
          DOM由节点组成:
    	Node分:元素节点(父)
		属性节点(子)
		文本节点(子)
方法:document.selectNodes(xpath);		//查一组
          document.selectSingleNode(xpath);	//查单个
核心类:SAXReader
             Document

3.2 xpath:path等同数据库的select语句。
/   定位路径 在系统中建一个文件叫document/students/student/sid|name
@   属性
示例:
        /students		获得students根节点
        /students/student	获得students根节点下面所有的student节点
        /students/student[@sid='s003']	获得students根节点下面student节点中sid属性等于s003的节点
        /students/student[@sid='s003']/name	获得students根节点下面student节点中sid属性等于s003的节点下面的name节点

*4. 案例: *
//1. 加载xml文件
InputStream is = Demo2.class.getResourceAsStream("/students.xml");
SAXReader saxReader = new SAXReader();
//2. 转换成Document对象
Document document = saxReader.read(is);

//node节点、element元素,可直接将node转成element
//List<Elemenet> studentNodes = (List<Elemenet>)document.selectNodes("/students/student");

 // 3. 获得指定元素路径下所有节点
List<Node> studentNodes = document.selectNodes("/students/student");
// 4. 遍历所有节点
for (Node studentNode : studentNodes) {
        //将节点转换成元素
        Element studentElement = (Element) studentNode;

        // 获得元素中的sid属性值
        // Attribute sidAttribute = studentElement.attribute("sid");
        // 获得元素中属性的数据
        // System.out.println(sidAttribute.getText());

        // 获得元素中的sid属性值
        String sid = studentElement.attributeValue("sid");
        // 获得name的元素
        Element nameElement = (Element) studentElement.selectSingleNode("name");
        // 根据元素名获得数据
        String name = nameElement.getText();
        System.out.println(sid + "," + name);
}

// sid=s003学生的姓名
//String xpath = “/students/student[@sid=‘s003’]”;
//Element e = (Element) document.selectSingleNode(xpath);
//String name = e.selectSingleNode(“name”).getText();
//System.out.println(name);

String xpath = “/students/student[@sid=‘s003’]/name”;
Element e = (Element) document.selectSingleNode(xpath);
System.out.println(e.getText());

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值