一聚教程网:一个值得你收藏的教程网站

热门教程

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

时间:2022-06-29 02:52:47 编辑:袖梨 来源:一聚教程网

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

 代码如下 复制代码
/**
 * 从zip文件中解析XML数据

 * @param filePath 文件绝对路径
 * @return List
 * @throws IOException
 * @throws DocumentException
 * @author 大漠
  */
public List getDataByXmlZipFile(String filePath) throws IOException, DocumentException{
 List recordList = new ArrayList<>();
 //zip文件
 ZipFile zipFile = new ZipFile(filePath);
 //遍历zipFile文件的ZipEntry实体,即xml文件
 for (Enumeration 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 elementList = document.selectNodes("/datas/data");
  //xml数据格式:
     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

 代码如下 复制代码


 
   
   
   
  

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;
 }
}

热门栏目