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的更多相关文章

  1. 简单用DOM4J结合XPATH解析XML

    由于DOM4J在解析XML时只能一层一层解析,所以当XML文件层数过多时使用会很不方便,结合XPATH就可以直接获取到某个元素 使用dom4j支持xpath的操作的几种主要形式    第一种形式   ...

  2. 详细说明XML分解(两)—DOM4J

    第一部分关于博客XML三接口,同时也为学习DOM4J该分析工具做准备.一般解析器基本上都实现了DOM和SAX这两组接口,DOM4J自然也不例外..DOM4J仅仅是经常使用解析器的当中一种,只是既然是实 ...

  3. 【java项目实战】dom4j解析xml文件,连接Oracle数据库

    简单介绍 dom4j是由dom4j.org出品的一个开源XML解析包.这句话太官方.我们还是看一下官方给出的解释.例如以下图: dom4j是一个易于使用的.开源的,用于解析XML,XPath和XSLT ...

  4. dom4j的测试例子和源码详解(重点对比和DOM、SAX的区别)

    目录 简介 DOM.SAX.JAXP和DOM4J xerces解释器 SAX DOM JAXP DOM解析器 获取SAX解析器 DOM4j 项目环境 工程环境 创建项目 引入依赖 使用例子--生成xm ...

  5. dom4j解析器 基于dom4j的xpath技术 简单工厂设计模式 分层结构设计思想 SAX解析器 DOM编程

    *1 dom4j解析器   1)CRUD的含义:CreateReadUpdateDelete增删查改   2)XML解析器有二类,分别是DOM和SAX(simple Api for xml).     ...

  6. dom4j 简单使用

    1,需要用到dom4j的jar包.为了打开xml方便,设计一个简单的封装类. package cn.com.gtmc.glaf2.util; import java.io.File; import j ...

  7. java 开发中 dom4j的简单用法

    Java中处理XML的方式有很多种,个人任务dom4j还是比较好用的.下面介绍以下简单的使用方法 先把import补充上 import org.dom4j.Document; import org.d ...

  8. dom4j最常用最简单的方法

    要使用dom4j读写XML文档,需要先下载dom4j包,dom4j官方网站在 http://www.dom4j.org/目前最新dom4j包下载地址:http://nchc.dl.sourceforg ...

  9. java代码用dom4j解析xml文件的简单操作

    时间: 2016/02/17 目标:为telenor的ALU Femto接口写一个采集xml文件并解析出locationName标签里的值,然后更新到数据库中. 从网上搜了下,有四种常用的解析xml的 ...

随机推荐

  1. centos LAMP第二部分apache配置 下载discuz!配置第一个虚拟主机 安装Discuz! 用户认证 配置域名跳转 配置apache的访问日志 配置静态文件缓存 配置防盗链 访问控制 apache rewrite 配置开机启动apache tcpdump 第二十节课

    centos    LAMP第二部分apache配置  下载discuz!配置第一个虚拟主机 安装Discuz! 用户认证 配置域名跳转  配置apache的访问日志  配置静态文件缓存  配置防盗链 ...

  2. gstreamer应用笔记

    gstreamer官网 https://gstreamer.freedesktop.org/ 应用手册 https://gstreamer.freedesktop.org/documentation/ ...

  3. [py][mx]django实现课程机构排名

    如果是第一次做这个玩意,说实话,确实不知道怎么弄, 做一次后就有感觉了 此前我们已经完成了: 分类筛选 分页 这次我们做的是 课程机构排名 知识点: - 按照点击数从大到小排名, 取出前三名 hot_ ...

  4. PAT 1061 Dating[简单]

    1061 Dating(20 分) Sherlock Holmes received a note with some strange strings: Let's date! 3485djDkxh4 ...

  5. Preview all adidas NMD Singapore colorways just below

    A week ago, we've got a glimpse into adidas NMD Singapore for the future using their Tubular line. O ...

  6. Integration Services 变量

    如果没有变量,你会发现在ssis里面啥都干不成,和人没有灵魂一样 对系统变量唯一可配置的选项是指定变量在更改值时是否引发事件. 待续

  7. 26种基于PHP的开源博客系统

    26种基于PHP的开源博客系统 来源:本站原创 PHP学习笔记 以下列举的PHP开源Blog系统中,除了我们熟知的WordPress之外,大多都没有使用过,其中一些已经被淘汰,或者有人还在使用.除了做 ...

  8. AI学习资料

    OpenAI Gym介绍 http://m.blog.csdn.net/u010510350/article/details/71450232

  9. 20145307陈俊达《网络对抗》Exp2 后门原理与实践

    20145307陈俊达<网络对抗>Exp2 后门原理与实践 基础问题回答 例举你能想到的一个后门进入到你系统中的可能方式? 非正规网站下载的软件 脚本 或者游戏中附加的第三方插件 例举你知 ...

  10. Java构造函数和this关键字

    一.  构造函数 /* 一个函数中定义的变量必须要初始化,否则编译会报错 一个类中的数据成员 1. 如果在定义的时候不初始化,则它的值是系统自动分配好的默认值! 如int型为零 boolean型是fa ...