<?xml version="1.0" encoding="UTF-8"?>
<dataSources>
<!-- 定义MySQL数据源 -->
<dataSource id="mysql" class="xxx.xxx.xx">
<property name="driverClassName">com.mysql.jdbc.Driver</property>
<property name="url">jdbc:mysql://127.0.0.1:3306/userdb</property>
<property name="username">root</property>
<property name="password">123</property>
</dataSource> <!-- 定义Oracle的数据源 -->
<dataSource default="true" id="oracle" class="xxx.xxx.xx">
<property name="driverClassName">com.oracle.jdbc.OracleDriver </property>
<property name="url">jdbc:oracle:thin:@127.0.0.1:1521:ORCL </property>
<property name="username">scott</property>
<property name="password">tiger</property>
</dataSource> <dataSource id="SQLServer" class="xxx.xxx.xx">
<property name="driverClassName">com.oracle.jdbc.OracleDriver</property>
<property name="url">jdbc:oracle:thin:@127.0.0.1:1521:ORCL</property>
<property name="username">scott</property>
<property name="password">tiger</property>
</dataSource> <transaction> </transaction>
</dataSources>
使用JDOM解析XML文件
package com.jdom.demo;

import java.io.InputStream;
import java.util.List; import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;
import org.jdom.xpath.XPath; /**
* 使用JDOM解析XML文件
*
* @author Administrator 补全快捷键: Ctrl+2, L
*
*/
public class JDOMParser {
public static void main(String[] args) throws Exception {
//testJdomParser();
testXPathXMLParser("oracle");
} private static void testJdomParser() throws Exception {
// 建造者设计模式
SAXBuilder saxBuilder = new SAXBuilder();
// 获取XML文件对应输入流
InputStream in = JDOMParser.class.getClassLoader().getResourceAsStream("datasource.xml");
// 通过构建器对象构建一个文档对象
Document document = saxBuilder.build(in);
// 获取根元素
Element rootElement = document.getRootElement(); // 获取根元素下面所有子元素
// getChildren() 获取所有子元素集合
// getChildren("元素名称") // 获取指定元素名称的元素集合
List<Element> childList = rootElement.getChildren("dataSource"); for (Element element : childList) {
// 获取id属性值
String id = element.getAttributeValue("id");
String clazz = element.getAttributeValue("class");
System.out.println("id=" + id + "-----class=" + clazz);
// 获取所有的property子节点
List<Element> propertyChild = element.getChildren("property"); for (Element childEl : propertyChild) {
String name = childEl.getAttributeValue("name"); // 获取元素name属性值
String text = childEl.getTextTrim(); // 获取元素中的内容 System.out.println("name=" + name + "=========content=" + text);
}
System.out.println("--------------------------");
}
} /**
* 使用XPath选取节点
* http://www.cnblogs.com/hoojo/archive/2011/08/11/2134638.html XPath解析
*/
private static void testXPathXMLParser(String dataSourceId) throws Exception{
// 建造者设计模式
SAXBuilder saxBuilder = new SAXBuilder();
// 获取XML文件对应输入流
InputStream in = JDOMParser.class.getClassLoader().getResourceAsStream("datasource.xml");
// 通过构建器对象构建一个文档对象
Document document = saxBuilder.build(in);
// 获取根元素
// Element rootElement = document.getRootElement();
// path: XPath表达式
XPath xpath = XPath.newInstance("dataSources/dataSource[@id='"+dataSourceId+"']");
Element dataSource = (Element) xpath.selectSingleNode(document);
// "//" 选取配置元素组成集合,不考虑位置
XPath propXpath = XPath.newInstance("property");
List<Element> nodes = propXpath.selectNodes(dataSource); // 从选择到dataSource元素下面选择子节点
for (Element el : nodes) {
System.out.println(el.getAttributeValue("name")+"-------------"+el.getTextTrim());
}
}
}
dom4j常规方式解析 
package com.dom4j.demo;

import java.io.InputStream;
import java.util.List; import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.XPath;
import org.dom4j.io.SAXReader; public class Dom4jParser {
public static void main(String[] args) throws Exception {
dom4jXpath("mysql");
} /**
* dom4j常规方式解析 -> 使用命名空间方式解析
* @throws Exception
*/
private static void dom4j() throws Exception {
// 创建SaxReader对象
SAXReader reader = new SAXReader();
InputStream in = Dom4jParser.class.getClassLoader().getResourceAsStream("datasource.xml");
// 获取到文档对象
Document document = reader.read(in);
// 获取根元素对象
Element rootElement = document.getRootElement();
// System.out.println(rootElement);
// 获取根元素下面所有子元素
// List<Element> elements = rootElement.elements();
// 获取根元素下面指定元素名称的子元素集合
List<Element> elements = rootElement.elements("dataSource"); for (Element el : elements) {
System.out.println(el.attributeValue("id") + "-----" + el.attributeValue("class"));
// 获取el元素下面所有子元素
List<Element> childList = el.elements("property"); for (Element childEl : childList) {
String name = childEl.attributeValue("name");
String text = childEl.getTextTrim();
System.out.println(name + "----------" + text);
}
System.out.println("------------------------------------------");
}
} /**
* dom4j方式解析使用XPath
* @throws Exception
*/
private static void dom4jXpath(String dataSourceId) throws Exception {
// 创建SaxReader对象
SAXReader reader = new SAXReader();
InputStream in = Dom4jParser.class.getClassLoader().getResourceAsStream("datasource.xml");
// 获取到文档对象
Document document = reader.read(in); XPath xpath = document.createXPath("dataSources/dataSource[@id='"+dataSourceId+"']");
Element dataSourceNode = (Element) xpath.selectSingleNode(document);
System.out.println(dataSourceNode.attributeValue("id")+"----"+dataSourceNode.attributeValue("class")); xpath = document.createXPath("property");
List<Element> propList = xpath.selectNodes(dataSourceNode); for (Element el : propList) {
String name = el.attributeValue("name");
String text = el.getTextTrim();
System.out.println(name+"--------------"+text);
}
}
}

JDOM,dom4j方式解析XML的更多相关文章

  1. DOM4J方式解析XML文件

    dom4j介绍 dom4j的项目地址:http://sourceforge.net/projects/dom4j/?source=directory dom4j是一个简单的开源库,用于处理XML. X ...

  2. Android网络之数据解析----SAX方式解析XML数据

    ​[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...

  3. 用JAXP的dom方式解析XML文件

    用JAXP的dom方式解析XML文件,实现增删改查操作 dom方式解析XML原理 XML文件 <?xml version="1.0" encoding="UTF-8 ...

  4. Dom方式解析XML

    public class TestXML { public static void main(String[] args) throws SAXException, IOException { //D ...

  5. (四)SAX方式解析XML数据

    SAX方式解析XML数据 ​文章来源:http://www.cnblogs.com/smyhvae/p/4044170.html 一.XML和Json数据的引入: 通常情况下,每个需要访问网络的应用程 ...

  6. JDOM生成、解析XML实例

    import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import j ...

  7. 用DOM方式解析XML

    一.用DOM方式解析XML 此例子节点结构如下: 1.获取book节点属性 (1).如果不知道节点的属性,通过 NamedNodeMap attrs = book.getAttributes(); 来 ...

  8. 在iOS 开发中用GDataXML(DOM方式)解析xml文件

    因为GDataXML的内部实现是通过DOM方式解析的,而在iOS 开发中用DOM方式解析xml文件,这个时候我们需要开启DOM,因为ios 开发中是不会自动开启的,只有在mac 开发中才自动开启的.我 ...

  9. android-pull方式解析xml文件以及XML文件的序列化

    android解析XML ---------------------------基础要像磐石 在android平台上可以使用SAX.DOM和自带的Pull解析器解析xml文件,本文主要介绍使用pull ...

随机推荐

  1. Android的Activity的小知识点

    1.android的四种启动模式分别是:standard,singleTop,SingleTask,singleInstance. 我们可以在AndroidMainfest.xml中通过Activit ...

  2. 移除HTML5 input在type="search"时的清除按钮

    input[type="search"]::-webkit-search-cancel-button { display: none; }

  3. XMind双十一会放什么大招?

    XMind一直是一款备受欢迎的思维导图软件,同时也是一款开源思维导图软件,以强大的免费功能为支持,向用户提供极致的使用体验.XMind现在分别有XMind免费版(XMind Free),XMind专业 ...

  4. JSP 点击量统计!

    详细JSP课程:阿里云大学——开发者课堂 有时候我们需要知道某个页面被访问的次数,这时我们就需要在页面上添加页面统计器,页面访问的统计一般在用户第一次载入时累加该页面的访问数上. 要实现一个计数器,您 ...

  5. 初见UDP_Server

    from socket import *ip_prot = ('192.168.55.1',8080)buffer_size = 1024udp_sever = socket(AF_INET,SOCK ...

  6. vue封装http请求

    import axios from 'axios' import isObject from 'lodash/isObject' const http = function (api, data = ...

  7. 转:用java调用oracle存储过程总结(比较好理解)

    这段时间开始学习写存储过程,主要原因还是因为工作需要吧,本来以为很简单的,但几经挫折,豪气消磨殆尽,但总算搞通了,为了避免后来者少走弯路,特记述与此,同时亦对自己进行鼓励. 一:无返回值的存储过程 存 ...

  8. vue实现分页器(仿element)

    1.起因 今日看完element中分页器的源码实现,比较简单,遂自己按着理解实现了一个简单的分页器,记录下来,以便日后温习. 2.实现难点 分页器的实现难点主要是什么时候显示分页器的省略, 我的思路是 ...

  9. [luogu2607 ZJOI2008] 骑士 (树形dp)

    题目描述 Z国的骑士团是一个很有势力的组织,帮会中汇聚了来自各地的精英.他们劫富济贫,惩恶扬善,受到社会各界的赞扬. 最近发生了一件可怕的事情,邪恶的Y国发动了一场针对Z国的侵略战争.战火绵延五百里, ...

  10. HBase入门操作 常用命令和增删改查的简单应用操作

    这里启动关闭Hadoop和HBase的顺序一定是: 启动Hadoop—>启动HBase—>关闭HBase—>关闭Hadoop ssh localhost 开启hadoopcd /us ...