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" ?> |
Record类:
代码如下 | 复制代码 |
public class Record { |
补充:Jsp教程,Java与XML