`

dom4j/javaDB

    博客分类:
  • xml
 
阅读更多

Dom4jTest.java

package com.test.dom4j;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Iterator;

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.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

public class Dom4jTest {

	// 读取xml文件
	public static void readXML(Element rootElement) {
		// 输入根元素节点名称
		System.out.println(rootElement.getName());
		for (Iterator i = rootElement.elementIterator(); i.hasNext();) {
			Element element = (Element) i.next();
			// 输入根元素下所有子节点名称
			System.out.println(element.getName());

			for (Iterator j = element.attributeIterator(); j.hasNext();) {
				Attribute attribute = (Attribute) j.next();
				// 输入根元素下每个子节点的属性名称及属性值
				System.out.println(attribute.getName() + "=" + attribute.getValue());
			}
		}
	}

	// 递归读取xml文件
	public static void recurseReadXML(Element element) {
		for (int i = 0, size = element.nodeCount(); i < size; i++) {
			Node node = element.node(i);
			if (node instanceof Element) {
				System.out.print(node.getName() + "[");
				for (Iterator j = ((Element) node).attributeIterator(); j.hasNext();) {
					Attribute attribute = (Attribute) j.next();
					// 输入根元素下每个子节点的属性名称及属性值
					System.out.print(attribute.getName() + "=\"" + attribute.getValue() + "\" ");
				}
				System.out.println("]");
				recurseReadXML((Element) node);
			}
		}
	}

	// 创建XML文件
	public static void createXML() {
		Document document = DocumentHelper.createDocument();
		Element peoples = document.addElement("peoples");
		Element people1 = peoples.addElement("people").addAttribute("id", "001")
				.addAttribute("email", "zhangsan@126.com");
		people1.addElement("name").addText("张三");
		people1.addElement("sex").addText("男");
		Element people2 = peoples.addElement("people").addAttribute("id", "002")
				.addAttribute("email", "lisi@126.com");
		people2.addElement("name").addText("李四");
		people2.addElement("sex").addText("女");
		try {
			OutputFormat format = OutputFormat.createPrettyPrint();
			XMLWriter writer = new XMLWriter(new FileWriter("test.xml"), format);
			format.setEncoding("GBK");// 解决输出中文乱码问题
			// FileOutputStream代替FileWriter也可以解决输出中文乱码问题
			// XMLWriter writer = new XMLWriter(new FileOutputStream("test.xml"), format);
			writer.write(document);
			writer.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	public static void main(String[] args) {
		try {
			SAXReader reader = new SAXReader();
			Document document = reader.read(new File("d:/test.xml"));
			Element rootElement = document.getRootElement();
			// 读取xml文件
			readXML(rootElement);
			System.out.println("*******************");
			// 递归读取xml文件
			recurseReadXML(rootElement);
			// 创建XML文件
			createXML();
		} catch (DocumentException e) {
			e.printStackTrace();
		}
	}
}

 

Java6里的数据库

JDK6除了传统的 binjre 等目录,JDK 6 新增了一个名为 db 的目录。这便是 Java 6 的新成员:Java DB。这是一个纯 Java 实现、开源的数据库管理系统(DBMS),源于 Apache 软件基金会(ASF)名下的项目 Derby。它只有 2MB 大小,对比动辄上 G 的数据库来说可谓袖珍。但这并不妨碍 Derby 功能齐备,支持几乎大部分的数据库应用所需要的特性。更难能可贵的是,依托于 ASF 强大的社区力量,Derby 得到了包括 IBM Sun 等大公司以及全世界优秀程序员们的支持。这也难怪 Sun 公司会选择其 10.2.2 版本纳入到 JDK 6 中,作为内嵌的数据库。这就好像为 JDK 注入了一股全新的活力:Java 程序员不再需要耗费大量精力安装和配置数据库,就能进行安全、易用、标准、并且免费的数据库编程。在这一章中,我们将初窥 Java DB 的世界,来探究如何使用它编写出功能丰富的程序。

Hello, Java DB:内嵌模式的 Derby

既然有了内嵌(embedded)的数据库,就让我们从一个简单的范例开始,试着使用它吧。这个程序做了大多数数据库应用都可能会做的操作:在 DBMS 中创建了一个名为 helloDB 的数据库;创建了一张数据表,取名为 hellotable;向表内插入了两条数据;然后,查询数据并将结果打印在控制台上;最后,删除表和数据库,释放资源。

package com.test.dreby;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

public class HelloJavaDB {
	public static void main(String[] args) {
		try {
			// 加载驱动
			Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance();
			Properties props = new Properties();
			props.put("user", "user1");
			props.put("password", "user1");
			// 创建并连接数据库helloDB
			Connection conn = DriverManager.getConnection("jdbc:derby:helloDB;create=true", props);

			conn.setAutoCommit(false);

			Statement stat = conn.createStatement();
			stat.execute("create table hellotable(name varchar(40), score int)");
			stat.execute("insert into hellotable values('Ruth Cao', 86)");
			stat.execute("insert into hellotable values ('Flora Shi', 92)");

			ResultSet rs = stat.executeQuery("select name, score from hellotable order by score");
			while (rs.next()) {
				StringBuilder builder = new StringBuilder(rs.getString(1));
				builder.append("\t");
				builder.append(rs.getInt(2));
				System.out.println(builder.toString());
			}
			//stat.execute("drop table hellotable");
			rs.close();
			stat.close();

			conn.commit();
			conn.setAutoCommit(true);
			conn.close();

			try {
				DriverManager.getConnection("jdbc:derby:;shutdown=true");
			} catch (SQLException e) {
				System.out.println("Database shut down normally");
			}
		} catch (Throwable e) {
			e.printStackTrace();
		}
	}
}

 

DatabaseMetaDataTest.java

package com.test.dreby;

import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;
import java.util.Properties;

public class DatabaseMetaDataTest {

	public static void main(String[] args) {
		try {
			// 加载驱动
			Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance();
			Properties props = new Properties();
			props.put("user", "user1");
			props.put("password", "user1");
			// 创建并连接数据库helloDB
			Connection conn = DriverManager.getConnection("jdbc:derby:helloDB;create=false", props);

			DatabaseMetaData dm = conn.getMetaData();
			/*ResultSet rs = dm.getTables(null, null, null, new String[] { "TABLE" });
			while (rs.next()) {
				System.out.println(rs.getString("TABLE_NAME"));
			}*/
			ResultSet rs = dm.getColumns(null, null, "HELLOTABLE", null);
			while (rs.next()) {
				int dataType = rs.getInt("DATA_TYPE");
				String strDataType = "";
				switch(dataType){
				case Types.VARCHAR:
					strDataType = "varchar";
					break;
				case Types.INTEGER:
					strDataType = "int";
					break;
				}
				System.out.println(rs.getString("COLUMN_NAME") + "	" + strDataType);
			}
			rs.close();
			conn.close();
			try {
				DriverManager.getConnection("jdbc:derby:;shutdown=true");
			} catch (SQLException e) {
				System.out.println("Database shut down normally");
			}
		} catch (Throwable e) {
			e.printStackTrace();
		}
	}

}

 

注:通过以上dom4jjavaDB的例子,自己可以编写一个生成数据库表结构的一个XML文件的例子

 

分享到:
评论

相关推荐

    log4j和dom4j jar包

    在Java开发领域,`log4j`和`dom4j`是两个非常重要的库,它们分别专注于日志管理和XML处理。下面将详细讲解这两个库的功能、用途以及如何使用。 首先,`log4j`是一个开源的日志记录框架,由Apache软件基金会开发。它...

    DOM与DOM4J的实战操作

    DOM4J是一个较为流行的第三方XML处理库,它扩展了Java标准库的DOM处理能力,提供了更丰富的API和更好的性能。在处理大型XML文件或需要特定高级功能时,开发者可能会选择使用DOM4J。 总结来说,本文通过具体的代码...

    DOM4J 解析XML

    - **DOM4J介绍**:DOM4J是一个Java库,专门用于处理XML文件。相比于其他XML处理技术(如SAX、DOM等),DOM4J提供了更为简洁和高效的API。它支持读取和写入XML文件,并允许开发者轻松地创建、修改和查询XML数据。对于...

    dom4j.jar包

    DOM4J是一个强大的Java库,专门用于处理XML文档。它是一个灵活且高性能的库,提供了丰富的API来解析、创建、修改以及操作XML内容。在Java Web项目中,DOM4J常被用来作为XML处理的标准工具,因为它具有高效、易于理解...

    java与xml 学习笔记整理

    另外,JDOM和DOM4J是两个流行的DOM替代库,提供了更友好的API来操作XML,尤其是对于复杂的XML结构。 JDOM简化了DOM的一些操作,它使用Java对象直接映射XML元素,使得操作更直观。DOM4J则在DOM的基础上进行了扩展,...

    java 常用的API

    在Java世界里,API涵盖了许多不同的库和框架,包括JDK(Java Development Kit)的基础库,jQuery这样的JavaScript库,Berkeley DB这样的数据库系统,以及DOM4J这样的XML处理库,还有Java EE(Java Enterprise ...

    java写xml的相关语句

    本文详细介绍了如何使用Java编写XML文件,包括使用DOM、SAX、JDOM和DOM4J等技术,以及通过示例代码展示了具体的实现过程。对于那些希望深入了解Java与XML集成的开发人员来说,这是一份宝贵的参考资料。

    xml文件解析2

    为了能够有效地读取和操作XML文件,各种编程语言提供了多种解析库,其中JDOM和DOM4j是在Java环境中较为流行的两种工具。本文将详细介绍如何使用JDOM和DOM4j进行XML文件解析,包括所需环境配置、核心概念以及具体代码...

    解析XML文档

    本篇文章将深入探讨四种主流的XML解析方式——DOM、SAX、JDOM和DOM4J,以及它们的优缺点。 1. DOM(Document Object Model)解析: DOM解析将整个XML文档加载到内存中,形成一个树形结构,允许开发者通过节点遍历和...

    Json+XML+Excel+DBFile相关的Jar包及关键操作代码

    Java中的DOM4J和JAXB是处理XML的常用库。例如,使用DOM4J读取XML文档: ```java import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; public class Main { public static ...

    xml的四种解析方法及源代码.pdf

    在Java中,处理XML文档通常有四种主要的解析方法:DOM(文档对象模型)、SAX(简单API对于XML)、JDOM(Java特定的DOM)以及DOM4J。每种解析方法都有自己的特点和适用场景,下面将详细介绍这些解析方法以及提供的...

    xml四种解析方法及源码

    在Java中,有四种常见的XML解析方法:SAX、DOM、JDOM和DOM4J。下面将详细介绍这四种解析方式及其源码示例。 1. **SAX解析** - **工作原理**:SAX(Simple API for XML)是一种基于事件驱动的解析方式。它逐行读取...

    java比对升级工具

    6. dom4j-1.6.1.jar:DOM4J是一个用于处理XML的Java库,可以用于读取、修改和生成XML文档,可能用于处理配置文件或升级日志的XML格式化。 7. jtds-1.2.jar:这是一个开源的JDBC驱动,用于连接Microsoft SQL Server...

    java写XML文件和读取XML文件

    4. DOM4J:一个Java的XML API,提供了丰富的功能和简单易用的API。 5. JDOM:为Java设计的DOM实现,提供了更快的性能和更简洁的API。 总的来说,Java提供了多种方式来处理XML文件,可以根据实际需求选择合适的API或...

    java 读取本地文件实例详解

    `dom4j`是一个强大的Java XML API,它提供了更简单易用的方法来处理XML文件。以下是如何使用`dom4j`来读取XML文件: ```java import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j....

    Java学习路线图.pdf

    * 日志基础:掌握 Log4j 1.x & 2.x、LogBack、SLF4J 等日志系统的使用。 阶段八:高级知识 * 数据结构基础:掌握数据结构的基础知识,例如数组、链表、栈、队列、树、图等。 * 算法基础:掌握常用的算法,例如排序...

    java读取XML文件的四种方法总结(必看篇)

    下面我们将总结四种常见的 Java 读取 XML 文件的方法,分别是 DOM、SAX、JDOM 和 DOM4J。 DOM 方式 DOM(Document Object Model)是一种基于树形结构的 XML 解析方式,使用 Java 中的 org.w3c.dom 包来实现。DOM ...

    java读取xml文件导入到mysql数据库中

    xml文件导入到mysql数据库中,包括文件:ConnectionUtils.java,InsertDT.java,db_mysql.properties,test01.xml,需要的jar包dom4j-1.6.1.jar,mysql-connection-java-3.1.1.3-bin.jar,jaxen-1.1-beta-7.jar

Global site tag (gtag.js) - Google Analytics