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 |
选取当前节点的所有子节点 |
/ |
从根节点选取 |
// |
从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置 |
. |
选取当前节点 |
.. |
选取当前节点的父节点 |
@ |
选取属性 |