简单使用dom4j
package com.dom4j; import java.io.FileWriter;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.Iterator;
import java.util.List; import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamSource; import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.DocumentResult;
import org.dom4j.io.DocumentSource;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter; public class Test1 {
public static void main(String[] args){
//C:/Users/Administrator.PMIMP83HWNIKWOV/Workspaces/MyEclipse 9/TestWeb/WebRoot/
/**
* 我使用绝对路径就会报错unknown protocol: c,不知道什么原因,现在使用的是相对路径,如果不好使用相对路径,直接使用File文件吧
*/
//String uri="WebRoot/xml/languages.xml";
//Document doc=praseXmlToDocument(uri);
//System.out.println(doc.getRootElement().getName());
//Iteratorasdom(doc);
//navigation(doc);
//treeWalk(doc);
//Document doc=createDocument();
//DocmentToFile(doc,"");
StringToDoc(); } public static Document praseXmlToDocument(String url){
/**
* 解析xml文件成document对象
*/
Document document=null;
try {
SAXReader reader=new SAXReader(); document = reader.read(url);
} catch (DocumentException e) {
e.printStackTrace();
}
return document;
} public static void Iteratorasdom(Document document){
/**
* document获取根元素: .getRootElement()
* Node类型获取所有字节点的迭代器 .elementIterator()
* 获取指定名称的所有子节点的迭代器 .elementIterator(String name)
* 获取所有属性的迭代器 .attributeIterator()
*/
Element root=document.getRootElement();
/*for(Iterator i=root.elementIterator();i.hasNext();){
Element element=(Element) i.next();
System.out.println(element.getName());
for(Iterator it=element.attributeIterator();it.hasNext();){
Attribute att=(Attribute) it.next();
System.out.println(att.getName()+"="+att.getStringValue());
}
}*/
for(Iterator i=root.elementIterator("lan");i.hasNext();){
Element element=(Element) i.next();
for(Iterator it=element.attributeIterator();it.hasNext();){
Attribute att=(Attribute) it.next();
System.out.println(att.getName()+"="+att.getStringValue());
}
}
} public static void navigation(Document document){
/* 使用selectNodes需要使用jaxen.jar
* .selectNodes("//languages/lan/name");获取所有指定名称节点的集合
* .selectSingleNode("//languages/lan/name"); 获取第一个指定名称的节点
* node和document对象都有这个方法
* */
/*List list=document.selectNodes("//languages/lan/name");
for(int i=0;i<list.size();i++){
Node node=(Node) list.get(i);
System.out.println(node.getText());
}*/
Node node=document.selectSingleNode("//languages/lan/name");
System.out.println(node.getText());
} /*遍历document或者element元素的方法*/ public static void treeWalk(Document document) {
treeWalk( document.getRootElement() );
} public static void treeWalk(Element element) {
for ( int i = 0, size = element.nodeCount(); i < size; i++ ) {
Node node = element.node(i);
if ( node instanceof Element ) {
treeWalk( (Element) node );
}
else
{
System.out.println(node.getText());
}
}
} public static Document createDocument(){
/**
* 添加子元素.addElement(String name)
* 添加属性 .addAttribute(key,value)
* 添加值 .addText(String value)
*/
Document document=DocumentHelper.createDocument();
Element root=document.addElement("root"); Element author1=root.addElement("author")
.addAttribute("name", "James")
.addAttribute("location", "UK")
.addText("James Strachan"); Element author2=root.addElement("author")
.addAttribute("name", "Bob")
.addAttribute("location", "US")
.addText("Bob Mchirter"); return document;
} public static void DocmentToFile(Document doc,String uri){
/* 第一种方法,使用XMLWriter对象的writer方法*/
XMLWriter writer = null;
/*try {
writer=new XMLWriter(new FileWriter(uri));
writer.write(doc);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}*/ /*
* 输出到控制台
* */
OutputFormat format=OutputFormat.createPrettyPrint();
try {
writer=new XMLWriter(System.out,format);
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
writer.write(doc);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } public static void StringToDoc(){
/* 将docment对象转换称为xml */
/*Document doc=createDocument();
String text=doc.asXML();
System.out.println(text);*/
/* 将text对象转换称为document*/
String text="<a><b>1</b><b>2</b><b>3</b></a>";
try {
Document document=DocumentHelper.parseText(text);
treeWalk(document);
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} public static Document a(Document doc,String stylesheet) throws IOException{
TransformerFactory factory=TransformerFactory.newInstance();
Transformer transformer = null;
try {
transformer=factory.newTransformer(new StreamSource(stylesheet));
} catch (TransformerConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} DocumentSource source=new DocumentSource(doc);
DocumentResult result=new DocumentResult();
try {
transformer.transform( source, result );
} catch (TransformerException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Document transformedDoc = result.getDocument();
XMLWriter writer = null; writer=new XMLWriter(new FileWriter("doc.doc"));
writer.write(transformedDoc); return transformedDoc;
} }
简单使用dom4j的更多相关文章
- 简单用DOM4J结合XPATH解析XML
由于DOM4J在解析XML时只能一层一层解析,所以当XML文件层数过多时使用会很不方便,结合XPATH就可以直接获取到某个元素 使用dom4j支持xpath的操作的几种主要形式 第一种形式 ...
- 详细说明XML分解(两)—DOM4J
第一部分关于博客XML三接口,同时也为学习DOM4J该分析工具做准备.一般解析器基本上都实现了DOM和SAX这两组接口,DOM4J自然也不例外..DOM4J仅仅是经常使用解析器的当中一种,只是既然是实 ...
- 【java项目实战】dom4j解析xml文件,连接Oracle数据库
简单介绍 dom4j是由dom4j.org出品的一个开源XML解析包.这句话太官方.我们还是看一下官方给出的解释.例如以下图: dom4j是一个易于使用的.开源的,用于解析XML,XPath和XSLT ...
- dom4j的测试例子和源码详解(重点对比和DOM、SAX的区别)
目录 简介 DOM.SAX.JAXP和DOM4J xerces解释器 SAX DOM JAXP DOM解析器 获取SAX解析器 DOM4j 项目环境 工程环境 创建项目 引入依赖 使用例子--生成xm ...
- dom4j解析器 基于dom4j的xpath技术 简单工厂设计模式 分层结构设计思想 SAX解析器 DOM编程
*1 dom4j解析器 1)CRUD的含义:CreateReadUpdateDelete增删查改 2)XML解析器有二类,分别是DOM和SAX(simple Api for xml). ...
- dom4j 简单使用
1,需要用到dom4j的jar包.为了打开xml方便,设计一个简单的封装类. package cn.com.gtmc.glaf2.util; import java.io.File; import j ...
- java 开发中 dom4j的简单用法
Java中处理XML的方式有很多种,个人任务dom4j还是比较好用的.下面介绍以下简单的使用方法 先把import补充上 import org.dom4j.Document; import org.d ...
- dom4j最常用最简单的方法
要使用dom4j读写XML文档,需要先下载dom4j包,dom4j官方网站在 http://www.dom4j.org/目前最新dom4j包下载地址:http://nchc.dl.sourceforg ...
- java代码用dom4j解析xml文件的简单操作
时间: 2016/02/17 目标:为telenor的ALU Femto接口写一个采集xml文件并解析出locationName标签里的值,然后更新到数据库中. 从网上搜了下,有四种常用的解析xml的 ...
随机推荐
- java 调用静态方法和构造函数和静态块执行的先后顺序
构造方法是只有你在new对象的时候才会执行,静态语句块和静态方法在类加载到内存的时候就已经执行了,另外,静态语句块只能给静态变量赋值,里面不能出现方法,同样,静态方法里面也不能出现静态语句块 追问: ...
- qt——QFileDialog使用对话框选取本地文件
QT在学习的过程中总是遇到各种问题,没有人解答,只有自己在研究并且在网上搜索一些资料,从初学到现在入门,一直都是这样走过来的,虽然走得很艰难,但是每一个阶段都会有所收获,最近在做一个图片浏览模块的功能 ...
- python 面向对象 __dict__
打印 类或对象中的所有成员 类的构造函数属性 属于对象:类中的公有属性和方法等属于类 打印信息 class schoolMember(object): '''学校成员分类''' member = 0 ...
- Controller中返回数据总结(ResponseEntity,@ResponseBody,@ResponseStatus)
在传统的开发过程中,我们的控制CONTROLLER层通常需要转向一个JSP视图:但随着WEB2.0相关技术的崛起,我们很多时候只需要返回数据即可,而不是一个JSP页面. ResponseEntity: ...
- thinkphp处理jQuery EasyUI form表单问题
jQuery EasyUI form表单不是ajax方式提交,而是在提交的时候新建一个隐藏的iframe并在iframe里面创建一个与绑定表单一样的表单,然后在iframe里面进行同步提交而不是异步提 ...
- 国内比特币bitcoin交易平台
火币网: www.huobi.com 比特币中国: www.btcchina.com okcoin: www.okcoin.cn 中国比特币: www.chbtc.com 比特币交易 ...
- [py]django重置密码
django的admin用户被我多动症一样的测试,给密码弄丢了,需要重置. 从数据库重置的可能性为0,因为django对于密码有保护策略.考虑从运行程序的地方进行重置: 1.在程序的文件夹下,执行这样 ...
- kafka详解
一.基本概念 介绍 Kafka是一个分布式的.可分区的.可复制的消息系统.它提供了普通消息系统的功能,但具有自己独特的设计. 这个独特的设计是什么样的呢? 首先让我们看几个基本的消息系统术语:Kafk ...
- Zabbix设置自定义监控
[zabbix]自定义监控项key值 说明: zabbix自带的默认模版里包括了很多监控项,有时候为了满足业务需求,需要根据自己的监控项目自定义监控项,这里介绍一种自定义监控项的方式. 1,首先编 ...
- sdut AOE网上的关键路径(spfa+前向星)
http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=2498&cid=1304 题目描述 一个无环的有向图称为无环图(Directed Acyc ...