当前位置:编程学习 > JSP >>

Java从zip文件中解析XML数据实例

从zip文件中解析xml文件一般步骤是先解压zip文件,然后在解析xml,这里直接从zip文件中读取xml的输入流进行解析,减少I/O操作。下面是一个从zip文件中解析xml文件的示例:

 

 代码如下 复制代码
/**
 * 从zip文件中解析XML数据<br/>
 * @param filePath 文件绝对路径
 * @return List<?>
 * @throws IOException
 * @throws DocumentException
 * @author 大漠
  */
public List<Record> getDataByXmlZipFile(String filePath) throws IOException, DocumentException{
 List<Record> recordList = new ArrayList<>();
 //zip文件
 ZipFile zipFile = new ZipFile(filePath);
 //遍历zipFile文件的ZipEntry实体,即xml文件
 for (Enumeration<? extends ZipEntry> entries = zipFile.entries(); entries.hasMoreElements();){
  ZipEntry zipEntry = entries.nextElement();
  //从zipFile中获取zipEntry的输入流,即xml文件的输入流
  InputStream inputStream = zipFile.getInputStream(zipEntry);
  //以下使用dom4j解析xml文件
  SAXReader reader = new SAXReader();
     Document document = reader.read(inputStream);
     //读xml文档中datas节点的所有data子节点元素
  List<Element> elementList = document.selectNodes("/datas/data");
  //xml数据格式: <data record="xxxxx" date="2013-06-15 11:22:33" />
     for (Element element : elementList) {
      Record record = new Record();
      //data元素的record属性值
      record.setRecord(element.attributeValue("record"));
       //data元素的date属性值
       record.setDate(element.attributeValue("date"));
       //record添加到recordList
       recordList.add(record);
   }
      //关闭流
      inputStream.close();
  }  
  return recordList;
 }


xml

 代码如下 复制代码

<?xml version="1.0" encoding="UTF-8" ?>
 <datas>
    <data record="xxxxx" date="2013-06-15 11:22:33" />
    <data record="yyyyy" date="2013-06-16 11:22:33" />
    <data record="zzzzz" date="2013-06-17 11:22:33" />
   </datas>

Record类:

 代码如下 复制代码

public class Record {
 private String id;
 private String record;
 private String date;
 
 public String getId() {
  return id;
 }
 public void setId(String id) {
  this.id = id;
 }
 public String getRecord() {
  return record;
 }
 public void setRecord(String record) {
  this.record = record;
 }
 public String getDate() {
  return date;
 }
 public void setDate(String date) {
  this.date = date;
 }
}

补充:Jsp教程,Java与XML
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,