`
lylegend13
  • 浏览: 82781 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Java读写.zip里的.xml

 
阅读更多

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import java.util.zip.ZipOutputStream;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import javax.xml.bind.annotation.XmlRootElement;

public class test2 {

	static JAXBContext jc;

	static {
		try {
			jc = JAXBContext.newInstance(stus.class);
		} catch (JAXBException e) {
			e.printStackTrace();
		}
	}

	public static void main(String[] args) {
		writeZip();

		readZip();
	}

	public static void writeZip() {
		ZipOutputStream zos = null;
		try {
			Marshaller u = jc.createMarshaller();

			zos = new ZipOutputStream(new FileOutputStream("d:\\1.zip"));

			// ------------------------------------
			zos.putNextEntry(new ZipEntry("1.xml"));
			stus stus = new stus();

			stu stu = new stu();
			stu.pet.add("y1");
			stu.pet.add("x2");
			stus.stu.add(stu);

			stu = new stu();
			stu.pet.add("y2");
			stu.pet.add("x1");
			stu.pet.add("z3");
			stus.stu.add(stu);

			u.marshal(stus, zos);

			// ------------------------------------
			zos.putNextEntry(new ZipEntry("2.xml"));
			stus = new stus();

			stu = new stu();
			stu.pet.add("y1");
			stu.pet.add("x2");
			stus.stu.add(stu);

			stu = new stu();
			stu.pet.add("y2");
			stu.pet.add("x1");
			stu.pet.add("z3");
			stu.pet.add("a5");
			stus.stu.add(stu);

			u.marshal(stus, zos);
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (JAXBException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (null != zos) {
				try {
					zos.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}

	public static void readZip() {
		ZipFile file = null;
		try {
			file = new ZipFile("d:\\1.zip");

			Unmarshaller u = jc.createUnmarshaller();

			ZipEntry entry = file.getEntry("1.xml");
			stus stus = (stus) u.unmarshal(file.getInputStream(entry));
			for (stu stu : stus.stu) {
				System.out.println(stu.pet);
			}

			System.out.println();

			// ------------------------------------
			entry = file.getEntry("2.xml");
			stus = (stus) u.unmarshal(file.getInputStream(entry));
			for (stu stu : stus.stu) {
				System.out.println(stu.pet);
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (JAXBException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (null != file) {
				try {
					file.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}
}

@XmlRootElement
class stus {
	public List<stu> stu = new ArrayList<stu>();
}

class stu {
	public List<String> pet = new ArrayList<String>();
}

 

输出结果:

[y1, x2]

[y2, x1, z3]

 

[y1, x2]

[y2, x1, z3, a5]



说明:
也可以使用ant.jar里apache提供的zip接口,通过设置编码可以解决.xml中文名称乱码。
分享到:
评论

相关推荐

    archive_电子白板代码(JAVA).zip.zip

    6. **文件I/O**:如果程序支持保存和加载草图,那么会用到文件读写操作,可能涉及到序列化或XML格式。 7. **设计模式**:良好的代码组织通常会运用设计模式,比如MVC(模型-视图-控制器)模式,将数据、显示和用户...

    javaapi.zip

    `java.io` 包则涉及输入输出操作,如文件读写、流处理等。 2. **集合框架**:Java API 中的集合框架是数据结构和算法的重要实现,包括 List(如 ArrayList 和 LinkedList)、Set(如 HashSet 和 TreeSet)和 Map...

    xml-apis.zip_JAVA XML_java xml_xml_zip

    "xml-apis.zip" 中的"xml-apis.jar" 文件是XML API的核心库,包含了多个与XML处理相关的Java包,如javax.xml、org.w3c.dom和org.xml.sax等。这些包提供了各种接口和类,帮助开发者执行以下任务: 1. **解析XML**:...

    java数据库驱动:mysql-connector-java-5.1.zip

    这个驱动程序允许Java程序通过JDBC(Java Database Connectivity)接口执行SQL查询,实现数据的读写操作。 JDBC是Java平台上的一个标准API,它定义了Java如何与各种类型的数据库进行交互。MySQL Connector/J是MySQL...

    java-xml.zip_xml;源代码;

    本资源“java-xml.zip”包含了一组关于Java处理XML的源代码示例,对于学习和理解如何在Java应用中有效地操作XML文件非常有帮助。 XML是一种自描述的标记语言,它定义了数据结构和内容,而不仅仅是显示格式。XML文件...

    javajson.zip

    JSON,全称JavaScript Object Notation,是一种轻量级的数据...以上内容涵盖了JSON在Java环境中的基本使用、常见库的介绍及其应用场景,如果你解压`javajson.zip`并深入学习,你将能够熟练地在Java项目中处理JSON数据。

    excel读写.zip

    "excel读写.zip"这个压缩包可能包含了一个项目或者解决方案,用于帮助用户实现对Excel文件的读取和写入操作。让我们详细探讨一下这个领域的相关知识点。 首先,Excel文件通常使用.XLS或.XLSX格式,它们是Microsoft ...

    XML How to Program-Java.zip_XML java_java how to program_java xm

    5. **XSLT转换**:Java使用`javax.xml.transform.Transformer`和`javax.xml.transform.TransformerFactory`来执行XSL(eXtensible Stylesheet Language)转换,将XML文档转换成其他格式,如HTML或新的XML。...

    javaapi.zip_Javaapi

    `java.io`包则包含了输入输出流处理,如文件读写和网络通信。 2. **集合框架**:`java.util`包中的`ArrayList`、`HashMap`、`LinkedList`等,为数据存储和管理提供了强大的工具。 3. **多线程**:`java.lang....

    java学习.java学习.zip

    在“java学习.zip”这个压缩包中,我们可能找到了一个名为“java_study-master”的项目,这通常代表这是一个关于Java学习的开源项目或者教程。"master"分支通常表示这是项目的主线或最新版本。 Java的学习涵盖了...

    Java源码包100个设计实例.zip

    Java源码包100个设计实例, 大量 实例,可以作为你的学习设计参考。...Java读写文本文件的示例代码 Java赌神游戏网络版源代码.rar Java超市管理,SQL2000+源代码.rar Java超市进销存系统.rar Java软件度量源码.ra

    javacommon.zip

    "javacommon.zip"这个文件名暗示了它可能包含了一些Java编程的基础知识和常见工具或类库。在Java中,"common"通常指的是那些在多个项目中都可以复用的通用代码或者模块。 1. **面向对象编程**:Java的核心特性之一...

    XML文件读写Demo.zip

    这个“XML文件读写Demo.zip”是一个演示如何在编程环境中操作XML文件的示例,包含创建、保存和读取XML文件的基本步骤。 首先,我们需要了解XML文件的基本结构。XML文件由一系列的元素(Element)组成,每个元素由...

    JavaProject.zip

    JavaProject.zip可能包含了这些知识的实践应用,如源代码文件(.java)、配置文件(如pom.xml或build.gradle)、资源文件(如图片、XML配置)等。解压后,通过阅读和分析这些文件,可以深入了解Java项目开发的全貌。

    单片机-EXCEL读写.zip

    本资源"单片机-EXCEL读写.zip"显然是一个关于如何使单片机与Microsoft Excel进行数据交换的教程或代码示例。下面将详细介绍这个主题,包括相关知识点和实现方法。 1. 单片机基础: - 单片机(Microcontroller)是...

    protobuf-java-3.0.2.zip

    描述中提到的"protobuf-java-3.0.2.zip 源码"表明这个压缩包里包含的是protobuf的Java实现源代码,版本为3.0.2。这将使开发者能够查看和理解protobuf库的工作原理,对其进行定制,或者对存在的问题进行调试。 标签...

    JAVA 编程 API基础 JAVA开发平台,JAVA编程资源----JAVA API.zip

    这个压缩包“JAVA 编程 API基础 JAVA开发平台,JAVA编程资源----JAVA API.zip”显然包含了关于Java API的基础知识和相关资源,非常适合初学者或希望深入理解Java API的开发者。 Java API基础.doc很可能是文档形式的...

    Java案例Java案例.zip

    在"Java案例.zip"这个压缩包中,我们很可能是找到了一个关于Java编程的学习资源,尤其是"java-workspace-master"这个文件名暗示了一个Java开发的工作空间或者项目。在这个工作空间中,通常会包含源代码文件、配置...

    java项目.zip

    在"java项目.zip"这个压缩包中,包含了实现以上知识点的源代码示例,5575757faga可能是一个具体的代码文件或者目录,用于演示某个特定功能或模块。通过详细研究和实践这些内容,开发者不仅能巩固理论知识,还能提升...

Global site tag (gtag.js) - Google Analytics