<?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. windows phone LongListSelector加载下一页

    LongListSelector利用ListHeader.ListFooter加载上一页和下一页XAML代码: <phone:LongListSelector> <phone:Lon ...

  2. Java开发就业形势和面试技巧

    如果从软件编程的就业来讲,如果你现在不懂架构,那么找到一份好工作还是比较难的,但是这里面有两点需要注意: 传统软件公司,这类公司还会使用最为原始的开发技术(SSH),但是这样的传统软件公司的招聘量已经 ...

  3. 使用ECharts制作图形时,如何设置指定图形颜色?

    使用ECharts制作图形时,图形颜色是默认的颜色,有时需求需要指定图形颜色,这就需要自己去设置. 在option下的series属性中设置itemStyle,如下所示: itemStyle: { n ...

  4. 【BZOJ1396】识别子串 - 后缀自动机+线段树

    题意: Description Input 一行,一个由小写字母组成的字符串S,长度不超过10^5 Output L行,每行一个整数,第i行的数据表示关于S的第i个元素的最短识别子串有多长. 题解: ...

  5. 使用剩余参数代替 arguments (prefer-rest-params)

    使用剩余参数代替 arguments (prefer-rest-params) 剩余参数来自于ES2016.可以在可变函数中使用这个特性来替代arguments变量. arguments没有Array ...

  6. 在Vue中使用了Swiper ,动态从后台获取数据的之后,swiper滑动失效??

    在Vue中使用了Swiper ,动态从后台获取数据的之后,swiper滑动失效?? 是因为swiper提前初始化了,那时候数据还没有完全出来.这里有两种解决办法 1. 使用vue提供的$nextTic ...

  7. js常用特效——选项卡效果

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  8. 解决ORA-28002: 密码7天之后过期办法

    https://www.douban.com/group/topic/46177516/ https://yq.aliyun.com/ziliao/42484 http://blog.csdn.net ...

  9. jquery简直是太酷炫强大了

    链接地址:http://www.yyyweb.com/350.html Web 开发中很实用的10个效果[源码下载] 小鱼 发布于 3年前 (2014-07-15) 分类:前端开发 阅读(303741 ...

  10. Chrome的JSON View插件

    Chrome的JSON View插件 学习了:http://www.cnplugins.com/zhuanti/five-chrome-json-plugins.html 下载了:http://www ...