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 ...
随机推荐
- Android的Activity的小知识点
1.android的四种启动模式分别是:standard,singleTop,SingleTask,singleInstance. 我们可以在AndroidMainfest.xml中通过Activit ...
- Pyhton二级操作题练习
# 1.编写一个python程序,输入两个数,比较它们的大小并输出其中较大者. num1 = input('请输入数字X:') num2 = input('请输入数字Y:') if num1.isde ...
- C#追加、拷贝、删除、移动文件、创建目录、递归删除文件夹及文件
C#追加文件 StreamWriter sw = File.AppendText(Server.MapPath(".")+"\\myText.txt"); sw ...
- B-Tree概念
记录下学习B-Tree: concept:(m-阶) 1. 根节点 孩子数 ( 2 <= N <= m) 根节点key数([m/2] - 1 <= n <= m -1) 2 ...
- js实现导航固定定位
js实现导航固定定位 <!DOCTY ...
- java中的instanceof用法
Java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例.instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例. 用法: ...
- iOS 图像处理-调整图像亮度
- (UIImage*) getBrighterImage:(UIImage *)originalImage { UIImage *brighterImage; CIContext *context ...
- 具体解释XML解析(一)—解析接口浅析
在DRP项目中接触到了一个XML解析工具DOM4J,它作为解析工具的据说性能很优秀.可是刚刚接触解析工具不久,而且也没有使用过其它的解析工具.因此对于DOM4J的性能没有直接的感受(没有參照物).只是 ...
- C#高级编程五十八天----并行集合
并行集合 对于并行任务,与其相关紧密的就是对一些共享资源,数据结构的并行訪问.常常要做的就是对一些队列进行加锁-解锁,然后运行类似插入,删除等等相互排斥操作. .NET4提供了一些封装好的支持并行操作 ...
- JS,Javascript加载与函数执行过程
Js,Javascript加载与函数执行过程 test.html <!DOCTYPE HTML> <html lang="en"> <head> ...