XML解析

目录

XML解析方式

一.java中配置文件的三种配置位置以及读取方式

 1.读取相同目录下配置文件

2.根目录

3.安全路径 WEB-INF

二.DOM4J

2.1DOM4J简介

2.2DOM4J解析

三.XPath

3.1选取节点


XML解析方式

  XML的解析方式分为四种:1、DOM解析;2、SAX解析;3、JDOM解析;4、DOM4J解析。其中前两种属于基础方法,是官方提供的平台无关的解析方式;后两种属于扩展方法,它们是在基础的方法上扩展出来的,只适用于java平台。

一.java中配置文件的三种配置位置以及读取方式


1.读取相同目录下配置文件
2.根目录
3.安全路径 WEB-INF

 1.读取相同目录下配置文件

package com.liaozhixiang.parse;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

/**
 * java中配置文件的三种配置位置以及读取方式
 * 1.读取相同目录下配置文件
 * 2.根目录
 * 3.安全路径 WEB-INF
 * @author Administrator
 *
 */



public class Demo1 {
    public static void main(String[] args) throws Exception {
    	
        //1.读写相同目录下配置文件
    	System.out.println("=====读写相同目录下配置文件====");
        InputStream is = Demo1.class.getResourceAsStream("db.properties");
        Properties p = new Properties();
        p.load(is);
        
        System.out.println(p.getProperty("upass"));
        
        
        
        

    }
}   

2.根目录

package com.liaozhixiang.parse;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

/**
 * java中配置文件的三种配置位置以及读取方式
 * 1.读取相同目录下配置文件
 * 2.根目录
 * 3.安全路径 WEB-INF
 * @author Administrator
 *
 */



public class Demo1 {
    public static void main(String[] args) throws Exception {
    	
       
    	 //通过类加载器读取根目录下的配置文件"/db.properties"
    	InputStream is = Demo1.class.getResourceAsStream("/db.properties");
        Properties p = new Properties();
        p.load(is);
        System.out.println(p.getProperty("upass"));
        
        
        
        
        
     
      
       
    }
}   

3.安全路径 WEB-INF

package com.liaozhixiang.parse;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


@WebServlet("/WebinfServlet")
public class WebinfServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
  
	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doPost(request, response);
	}

	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//访问安全路径的配置文件 
		InputStream is = request.getServletContext().getResourceAsStream("/WEB-INF/db.properties");
		Properties p = new Properties();
		p.load(is);
		System.out.println(p.getProperty("driver_Class"));
		System.out.println(p.getProperty("upass"));
	
	
	}

}

二.DOM4J

2.1DOM4J简介

    DOM4J是 dom4j.org 出品的一个开源 XML 解析包。DOM4J应用于 Java 平台,采用了 Java 集合框架并完全支持 DOM,SAX 和 JAXP。

    DOM4J 使用起来非常简单。只要你了解基本的 XML-DOM 模型,就能使用。

    Dom:把整个文档作为一个对象。

  DOM4J 最大的特色是使用大量的接口。它的主要接口都在org.dom4j里面定义:

Attribute

定义了 XML 的属性。

Branch

指能够包含子节点的节点。如XML元素(Element)和文档(Docuemnts)定义了一个公共的行为

CDATA

定义了 XML CDATA 区域

CharacterData

是一个标识接口,标识基于字符的节点。如CDATA,Comment, Text.

Comment

定义了 XML 注释的行为

Document

定义了XML 文档

DocumentType

定义 XML DOCTYPE 声明

Element

定义XML 元素

ElementHandler

定义了Element 对象的处理器

ElementPath

被 ElementHandler 使用,用于取得当前正在处理的路径层次信息

Entity

定义 XML entity

Node

为dom4j中所有的XML节点定义了多态行为

NodeFilter

定义了在dom4j 节点中产生的一个滤镜或谓词的行为(predicate)

ProcessingInstruction

定义 XML 处理指令

Text

定义 XML 文本节点

Visitor

用于实现 Visitor模式

XPath

在分析一个字符串后会提供一个 XPath 表达式

2.2DOM4J解析

dom4j是目前在xml解析方面是最优秀的(Hibernate、Sun的JAXM也都使用dom4j来解析XML),它合并了许多超出基本 XML 文档表示的功能,包括集成的 XPath 支持、XML Schema 支持以及用于大文档或流化文档的基于事件的处理

     特征:

      1、JDOM的一种智能分支,它合并了许多超出基本XML文档表示的功能。

      2、它使用接口和抽象基本类方法。

      3、具有性能优异、灵活性好、功能强大和极端易用的特点。

      4、是一个开放源码的文件

2.3DOM4J方法

 1.selectNodes 获取某一个节点集合
 2.selectSingNodes 获取一个节点
 3.attribturValue 获取某一个的属性
 4.getText 获取某一个标签的内容

三.XPath

XPath 是一门在 XML 文档中查找信息的语言, 可用来在 XML 文档中对元素和属性进行遍历。XPath 是 W3C XSLT 标准的主要元素,并且 XQuery 和 XPointer 同时被构建于 XPath 表达之上。因此,对 XPath 的理解是很多高级 XML 应用的基础。
XPath非常类似对数据库操作的SQL语言,或者说JQuery,它可以方便开发者抓起文档中需要的东西。(dom4j也支持xpath)

3.1选取节点

XPath 使用路径表达式在 XML 文档中选取节点,节点是沿着路径或者 step 来选取的。

常见的路径表达式:

表达式 

描述 

nodename

选取当前节点的所有子节点

/

从根节点选取

//

从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置

.

选取当前节点

..

选取当前节点的父节点

@

选取属性

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值