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 ...
随机推荐
- visio中如何取消跨线和去掉页边距
比较来说,写论文visio和inkscape都不可缺少. 比如visio跨线的问题,已经遇到过两次忘记了.这次截个图作为记录.其实就是在“设计”一栏里,把连接线里面的跨线显示的对勾去掉即可. *** ...
- (转)Django学习之 第三章:动态Web页面基础
上一章我们解释了怎样开始一个Django项目和运行Django服务器 当然了,这个站点实际上什么也没有做------除了显示了"It worked"这条信息以外. 这一章我们介绍怎 ...
- 使用jquery获取ul中当前正在点击的li的索引
<ul class="list"> <li>哈哈</li> <li>呵呵</li> <li>嘻嘻</l ...
- 蓝桥杯_left and throw
思考了许久没有结果,最后,还是一位擅长搜索资源的学长帮我找到了一个不错的代码,这个代码极其精妙,再一次印证了一句话,没有做不到的,只有想不到的,当然这个代码我拿到手的时候是个没有注释的代码,我费尽周折 ...
- java 公开内部类无法实例化 no enclosing instance 解决办法
因为B类不是A类的静态内部类,所以B累也只能像A类的成员一样通过new A()的实例访问,new(new A()).B(),这显然不是我们想要的方式,于是需要在B类的前边加上static,变成下边这样 ...
- Flex tree展开节点问题!
问题: 使用 for each(var item:XML in menuTree.dataProvider) { menuTree.expandChildrenOf(item,true); ...
- Java简述
Java的特点(11个关键术语)from<Java核心技术I> 1) 简单性 2) 面向对象 3) 分布式 Java有一个丰富的例程库,用于处理像HTTP和FTP之类的TCP/IP协议 ...
- MHA 主从切换过程及日志分析
本文主要在MHA 切换日志的角度分析MHA切换的过.MHA故障切换过程如下图所示 第一部分:开启MHA 监控 通过分析日志,得到以下步骤: 1.读取MHA manager 节点的配置文件,并检查配置文 ...
- Linux学习01
Linux学习第一天 1.使用VM安装RHEL7.0 具体参见刘遄老师的<Linux就该怎么学>https://www.linuxprobe.com/chapter-01.html 2.R ...
- 2.安装Cython
许多科学的Python发行版,例如Anaconda,Enthought Canopy和Sage,捆绑Cython并且不需要设置. 与大多数Python软件不同,Cython需要在系统上存在C编译器.获 ...