JDOM,dom4j方式解析XML
<?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的更多相关文章
- DOM4J方式解析XML文件
dom4j介绍 dom4j的项目地址:http://sourceforge.net/projects/dom4j/?source=directory dom4j是一个简单的开源库,用于处理XML. X ...
- Android网络之数据解析----SAX方式解析XML数据
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...
- 用JAXP的dom方式解析XML文件
用JAXP的dom方式解析XML文件,实现增删改查操作 dom方式解析XML原理 XML文件 <?xml version="1.0" encoding="UTF-8 ...
- Dom方式解析XML
public class TestXML { public static void main(String[] args) throws SAXException, IOException { //D ...
- (四)SAX方式解析XML数据
SAX方式解析XML数据 文章来源:http://www.cnblogs.com/smyhvae/p/4044170.html 一.XML和Json数据的引入: 通常情况下,每个需要访问网络的应用程 ...
- JDOM生成、解析XML实例
import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import j ...
- 用DOM方式解析XML
一.用DOM方式解析XML 此例子节点结构如下: 1.获取book节点属性 (1).如果不知道节点的属性,通过 NamedNodeMap attrs = book.getAttributes(); 来 ...
- 在iOS 开发中用GDataXML(DOM方式)解析xml文件
因为GDataXML的内部实现是通过DOM方式解析的,而在iOS 开发中用DOM方式解析xml文件,这个时候我们需要开启DOM,因为ios 开发中是不会自动开启的,只有在mac 开发中才自动开启的.我 ...
- android-pull方式解析xml文件以及XML文件的序列化
android解析XML ---------------------------基础要像磐石 在android平台上可以使用SAX.DOM和自带的Pull解析器解析xml文件,本文主要介绍使用pull ...
随机推荐
- swift使用查阅资料备份2
Swift3.0朝圣之路-Then协议库-绝妙的初始化方式 https://www.jianshu.com/p/6cc1e21df6ac DisposeBag http://southpeak.git ...
- 关于mysql无法添加中文数据的问题以及解决方案(转载)
今天弄了一天的mysql数据库,就是被一个mysql数据库乱码的问题给缠住了.现在记录一下这个问题,虽然这个问题不是什么太大的事情,但还是记录一下. 问题是这样的: 1.先在mysql的安装文件当中, ...
- JavaScript:理解执行环境、作用域链和活动对象
作用域的原理,对JS将如何解析标识符做出了解答.而作用域的形成与执行环境和活动对象紧密相关. 我们对于JS标识符解析的判断,存在一个常见误区 首先,看一个关于JS标识符解析的问题 ,源于风雪之隅提出的 ...
- vertical-align到底是个啥
https://developer.mozilla.org/en-US/docs/Web/CSS/vertical-align http://phrogz.net/css/vertical-align ...
- Parse error: syntax error, unexpected '__data' (T_STRING), expecting ',' or ')'
使用laravel时,建立view文件引入dafault文件时报错: Parse error: syntax error, unexpected '__data' (T_STRING), expect ...
- [读书笔记] Python 数据分析 (十一)经济和金融数据应用
resample: 重采样函数,可以按照时间来提高或者降低采样频率,fill_method可以使用不同的填充方式. pandas.data_range 的freq参数枚举: Alias Descrip ...
- 命令行导入导出Mysql数据库
MySQL命令行导出数据库:1,进入MySQL目录下的bin文件夹:cd MySQL中到bin文件夹的目录,如我输入的命令行:cd C:\Program Files\MySQL\MySQL Serve ...
- ES6之用let,const和用var来声明变量的区别
var(掌握) 不区分变量和常量 用var声明的变量都是变量,都是可变的,我们可以随便对它进行运算操作.这样当多个人进行同一个项目时,区分变量和常量会越来越难,一不小心就会把设计为常量的数据更改了 ...
- bat启动.exe的应用程序
新建一个文本文档,编写如下,完成后保存将后缀名txt改为bat即可. rem 启动***(要启动的服务名) @echo off rem 程序安装的顶层目录 d: rem 设置显示文字颜色 color ...
- https的基本原理,看完你的程序员女朋友再也不和你提分手了
[http风险] 首先,我们来讲一下平时上网的时候,存在的风险. 初步接触过网络的同学都知道,网络上是很不安全的,尤其是各种公共场合的免费WIFI,以及手机上各种免费上网的万能钥匙.这些不安全因素会导 ...