`
tiansoft
  • 浏览: 175593 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

dom4j解析xml和创建xml文件

    博客分类:
  • java
阅读更多
xml是扩展性的标记性语言,是用于两个程序之间数据通信,也可以用来存放数据,做一个小型的数据库等,xml广泛使用与项目开发中,我们可以把很多有用的内容保存在xml文件中,这样便于修改,方便,灵活。当我们想要取出保存在xml中的数据的时候,我们可以把它解析出来,便于我们使用,解析xml文件的方法有很多种,但dom4j是最灵活和最常用的一种方法,以后在hibernate中也经常使用,下面是解析xml文件的一个简单的实例:
一:一个简单的xml文件:
<?xml version="1.0" encoding="utf-8"?>
<class>
  <student id="hhh" name="kaka">
    <name id ="tt" name="kak">周星星</name>
<age id="ttt">45</age>
<sex id="mao">男</sex>
  </student>
   <student id="aa">
    <name id="kk">田小小</name>
<age id="nn">20</age>
<sex id="ll">男</sex>
  </student>
   <student id="55">
    <name id="hha">小小</name>
<age id="kka">45</age>
<sex id="maomao">男</sex>
  </student>

</class>
二:用dom4j解析出所有元素和属性:
package xml;

import java.io.File;
import java.util.*;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class ReaderXml2 {

public void read() throws Exception {
//创建一个xml读取器
SAXReader reader = new SAXReader();
//读取文件
//路径,现在4。xml是直接放在项目的根目录下Document document = reader.read(new File("4.xml"));
//若不是放在根目录下,那么就要指定一个路径,避免出错
String path = this.getClass().getResource("/4.xml").getPath();
//Document是文档
Document document = reader.read(new File(path));
//获取根元素
Element element = document.getRootElement();
element(element);

}
//递归取出所有元素
public void element(Element element){
System.out.println("元素: "+element.getName());
//如果只是一个普通的元素没有子元素的,就直接输出
if(element.isTextOnly()==true){
System.out.println("元素 名称:  "+element.getName()+"||||"+"元素内容:"+element.getText());
}else{
//如果里面还有字元素的,那么就把它里面的内容输出
List elements = element.elements();
int size = elements.size();
for(int i=0;i<size;i++){
Element emt = (Element)elements.get(i);
//System.out.println("元素:"+emt.getName());
//递归遍历出所有的元素
element(emt);
//某一个元素的所有属性列出来
arr(emt);
}
}
}
public void arr(Element element){
//取出所有的属性,放在list中
List att = element.attributes();
int size = att.size();
for(int i=0;i<size;i++){
//依次取出属性
Attribute attb = (Attribute)att.get(i);
//输出元素名称,属性名称和属性内容
System.out.println("元素名称"+element.getName()+"   属性名称:"+attb.getName()+"属性内容:"+attb.getValue());

}
}

public static void main(String[] args){

try {
new ReaderXml2().read();
} catch (Exception e){
    e.printStackTrace();
}
}
}
三:用访问者模式快速读取xml文件:

下面这个xml是一个加载和连接Oracle数据库的xml配置文件
<?xml version="1.0" encoding="utf-8"?>
<oracle>
<drivername>oracle.jdbc.driver.OracleDriver</drivername>
<url>jdbc:oracle:thin:@192.168.6.4:1521:orcl</url>
<dbname>scott</dbname>
</oracle>
编写访问者设计模式,读取该文件:
package xml;

import java.io.File;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;

import org.dom4j.VisitorSupport;
import org.dom4j.io.SAXReader;

public class Visitorreader {

public void load(String xmlfile){
SAXReader reader = new SAXReader();
String path = this.getClass().getResource(xmlfile).getPath();
try {
Document doc = reader.read(new File(path));
doc.accept(new Myvisitor());
} catch (DocumentException e) {

e.printStackTrace();
}
}
//访问者模式
class Myvisitor extends VisitorSupport{

@Override
public void visit(Attribute node) {
System.out.println("属性名称:"+node.getName()+"\t\t"+"属性内容:"+node.getValue());
}

@Override
public void visit(Element node) {
           
System.out.println("元素名称:"+node.getName()+"\t\t"+"元素内容:"+node.getText());
}

}
public static void main(String[] args){
new Visitorreader().load("/4.xml");
}
   
}

<dbpw>tiger</dbpw>
</oracle>
从上面的程序中我们可以看出,很简单,比第一个列子中的代码少了很多。而且这样的读取后,我们可以再编写一个连接数据库的工具类,把上面的读取方法直接加上去,就可以了,就避免了我们在使用工具类连接数据库的时候,由于服务器的不同而修改多次的代码,若要修改,我们直接修改xml文件,就可以很方面的解决,在此就不多加描述了

四。使用dom4j技术创建xml文件
package xml;

import java.io.FileWriter;
import java.io.IOException;

import org.dom4j.Document;
import org.dom4j.DocumentFactory;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;

public class CreateXml {

private void create(String xmlFileName){
//
DocumentFactory factory = new DocumentFactory();
Document document = factory.createDocument();
Element root = document.addElement("计算机图书");
for(int i=0;i<4;i++){
Element book = root.addElement("图书");
book.setText("Think in java"+i);
book.addAttribute("isdn","a"+Math.random()*100);
Element e = book.addElement("作者");
e.setText("田小小");
}
OutputFormat format = new OutputFormat("    ",true,"GBK");
try {
FileWriter fw = new FileWriter(xmlFileName);

XMLWriter writer = new XMLWriter(fw,format);
writer.write(document);
fw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}


}
public static void main(String[] args){
new CreateXml().create("book.xml");
}
}
这样的话,就生成了一个简单的xml文件如下所示:
<?xml version="1.0" encoding="GBK"?>

<计算机图书>
    <图书 isdn="a10.253042872768658">Think in java0
        <作者>田小小</作者>
    </图书>
    <图书 isdn="a25.008161429145538">Think in java1
        <作者>田小小</作者>
    </图书>
    <图书 isdn="a87.98573091148226">Think in java2
        <作者>田小小</作者>
    </图书>
    <图书 isdn="a9.459176830404992">Think in java3
        <作者>田小小</作者>
    </图书>
</计算机图书>
这些都是xml的简单应用,其实xml广泛应用于web开发中,在以后的编程中将会使用xml更多的知识!!
分享到:
评论

相关推荐

    dom4j解析xml详解

    ### DOM4J解析XML详解 #### 一、DOM4J简介与特性 DOM4J是一个由dom4j.org开发的开源XML解析包,专为Java平台设计,它不仅支持DOM、SAX和JAXP标准,还巧妙地融入了Java集合框架,使其成为Java开发者在处理XML数据时...

    dom4j解析xml文件的压缩包

    5. **事件驱动解析(SAX)**:除了传统的DOM解析外,DOM4J还支持SAX解析器,这种解析方式适用于处理大型XML文件,因为它不需要一次性加载整个文档到内存。 6. **Namespace支持**:DOM4J提供了对XML命名空间的全面...

    使用 dom4j 解析 XML

    使用 dom4j 解析 XML dom4j 解析 XML dom4j解析xml

    dom4j 解析写入xml

    1、xml文档解析 2、 dom4j解析xml 3、实现xml文件解析 xml字符串解析 xml MAP键值对解析 4、实现xml写入与生成文件

    dom4j解析xml文件(增删改查)

    在解析XML文件时,我们可以使用`DocumentBuilderFactory`和`DocumentBuilder`来创建一个`Document`对象,然后通过`DOM4J`的`SAXReader`类进一步处理这个对象。例如: ```java SAXReader reader = new SAXReader(); ...

    java dom4j解析xml

    Java DOM4J解析XML是一种常见的处理XML文档的技术,它提供了灵活且高效的API,使得...通过理解上述DOM4J解析XML的基本概念、操作和示例,开发者可以有效地在Java项目中处理XML数据,无论是读取、创建还是修改XML文件。

    利用Dom4j生成XML和解析XML

    在本文中,我们将学习如何使用 Dom4j 生成 XML 文档和解析 XML 文档。 生成 XML 文档 使用 Dom4j 生成 XML 文档非常简单。首先,我们需要创建一个 Document 对象,然后添加元素和属性。下面是一个生成 XML 文档的...

    DOM4J 解析XML

    在解析XML时,DOM4J有两种主要的解析方式:SAX和DOM。SAX是一种基于事件的解析器,适用于处理大型XML文档,因为它不会将整个文档加载到内存中。DOM,即文档对象模型,会构建一个完整的XML树,适合小型或中等大小的...

    dom4j解析xml实例

    通过学习和实践这些基本操作,你可以熟练掌握DOM4J解析XML的技巧,为你的Java项目中处理XML数据提供强大的支持。在项目中遇到具体问题时,可以参考DOM4J的官方文档,或利用在线资源进行更深入的学习。

    dom4j解析xml

    ### DOM4J解析XML知识点详解 #### 一、DOM4J简介 DOM4J是一个Java库,用于处理XML文档。它的设计目标是为了提供一个简单、易于使用的API来处理XML文件,同时保持性能上的优势。与Java标准库中的DOM实现相比,DOM4J...

    dom4j解析XML所需jar包

    4. **XML文档构建**:DOM4J允许动态构建XML文档,通过`DocumentFactory`可以创建XML元素,并逐层添加子元素和属性,构建复杂的XML结构。 5. **XML文档操作**:DOM4J提供了丰富的API,如添加、删除、移动和复制XML...

    dom4j 解析xml实例

    通过这个实例,我们可以学习到DOM4J解析XML的基本操作,包括加载XML文件、访问和修改元素、以及保存更改。这只是一个简单的例子,DOM4J库还提供了更高级的功能,如XPath查询、事件驱动的处理模式等,可以满足更复杂...

    dom4j解析xml文件代码示例

    在本示例中,我们将深入探讨如何使用DOM4J解析XML文件,以`CacheInit.java`作为我们的核心代码示例,并参考`emailTemplateConfig.xml`作为实际操作的对象。 首先,让我们了解XML(eXtensible Markup Language)。...

    dom4j 解析(读取) xml 节点数据

    要开始解析XML文件,首先需要导入DOM4J的相关包: ```java import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.SAXReader; ``` 接下来,我们将创建...

    分别使用DOM和DOM4j解析XML文件

    使用DOM解析XML的基本步骤如下: 1. 创建DocumentBuilderFactory实例。 2. 使用DocumentBuilderFactory创建DocumentBuilder实例。 3. 使用DocumentBuilder的parse()方法解析XML文件,得到Document对象。 4. 通过...

    dom4j解析xml,利用反射机制

    在这个项目中,我们利用DOM4J来解析XML文件,并通过Java的反射机制将解析出的信息存储到特定的类中。 首先,我们需要了解XML的基本概念。XML(Extensible Markup Language)是一种标记语言,常用于数据交换和结构化...

    dom4j解析XML文档.ppt

    DOM4J是一个强大的Java库,专门用于解析XML文档。它提供了简单易用的API,使得开发者可以更加方便地处理XML数据。DOM4J的核心优势在于它的面向接口编程设计,这使得它能够在不同的解析机制间灵活切换,如DOM、SAX和...

    用dom4j解析xml文件

    本篇文章将深入探讨如何使用DOM4J来解析XML文件,以及通过示例代码来展示其基本操作。 首先,我们需要理解DOM4J的工作原理。DOM4J采用的是DOM(Document Object Model)模型,它将整个XML文档加载到内存中形成一棵...

Global site tag (gtag.js) - Google Analytics