`
taiwei.peng
  • 浏览: 229061 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

SAX 解析xml并生成EXCEL

    博客分类:
  • XML
阅读更多

1.xml代码

<?xml version="1.0" encoding="utf-8"?>
<DataSet xmlns="http://www.sz-customs.gov.cn/WebService/">
       <Table id="Table1" msdata:rowOrder="0">
        <FULL_NAME>广州广发鞋材有限公司</FULL_NAME>
        <TRADE_CO />
        <CASE_ID>533040120040041</CASE_ID>
        <CASE_DATE>2004-10-22T00:00:00+08:00</CASE_DATE>
        <CASE_DEPT>深圳缉私局文锦渡缉私分局查私科</CASE_DEPT>
        <CASE_TYPE>违规</CASE_TYPE>
      </Table>
      <Table id="Table2" msdata:rowOrder="1">
        <FULL_NAME>联能科技(深圳)有限公司</FULL_NAME>
        <TRADE_CO>4403945553</TRADE_CO>
        <CASE_ID>533040120040061</CASE_ID>
        <CASE_DATE>2004-11-02T00:00:00+08:00</CASE_DATE>
        <CASE_DEPT>深圳缉私局文锦渡缉私分局查私科</CASE_DEPT>
        <CASE_TYPE>违规</CASE_TYPE>
      </Table>
      <Table id="Table3" msdata:rowOrder="2">
        <FULL_NAME>肇庆时升运输有限公司</FULL_NAME>
        <TRADE_CO />
        <CASE_ID>533040120040082</CASE_ID>
        <CASE_DATE>2004-10-22T00:00:00+08:00</CASE_DATE>
        <CASE_DEPT>深圳缉私局文锦渡缉私分局查私科</CASE_DEPT>
        <CASE_TYPE>违规</CASE_TYPE>
      </Table>
      <Table id="Table4" msdata:rowOrder="3">
        <FULL_NAME>深圳市国免工贸有限公司</FULL_NAME>
        <TRADE_CO />
        <CASE_ID>533040120040083</CASE_ID>
        <CASE_DATE>2004-10-21T00:00:00+08:00</CASE_DATE>
        <CASE_DEPT>深圳缉私局文锦渡缉私分局查私科</CASE_DEPT>
        <CASE_TYPE>违规</CASE_TYPE>
      </Table>
      <Table id="Table5" msdata:rowOrder="4">
        <FULL_NAME>南山区福光港兴手袋来料加工厂</FULL_NAME>
        <TRADE_CO />
        <CASE_ID>533040120040101</CASE_ID>
        <CASE_DATE>2004-10-27T00:00:00+08:00</CASE_DATE>
        <CASE_DEPT>深圳缉私局文锦渡缉私分局查私科</CASE_DEPT>
        <CASE_TYPE>违规</CASE_TYPE>
      </Table>

</DataSet>

 

java 代码

package com.soft.util;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

import com.soft.model.ChenxinResult;
 
public class SAXDemo extends DefaultHandler{
 
    private List<ChenxinResult> result = null;  
    private ChenxinResult chenxin = null;  
    private String preTag = null;//作用是记录解析时的上一个节点名称  
      
    public List<ChenxinResult> getResults(InputStream  xmlStream) throws Exception{  
        SAXParserFactory factory = SAXParserFactory.newInstance();  
        SAXParser parser = factory.newSAXParser();  
        SAXDemo handler = new SAXDemo();  
        parser.parse(xmlStream, handler);  
        return handler.getResults();  
    }  
      
    public List<ChenxinResult> getResults(){  
        return result;  
    }  
      
    @Override 
    public void startDocument() throws SAXException {  
     result = new ArrayList<ChenxinResult>();  
    }  
 
    @Override 
    public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {  
        if("Table".equals(qName)){  
         chenxin = new ChenxinResult();  
         chenxin.setId(attributes.getValue(0));   
        }  
        preTag = qName;//将正在解析的节点名称赋给preTag  
    }  
 
    @Override 
    public void endElement(String uri, String localName, String qName)  
            throws SAXException {  
        if("Table".equals(qName)){  
         result.add(chenxin);  
         chenxin = null;  
        }  
        preTag = null;
    }  
      
    @Override 
    public void characters(char[] ch, int start, int length) throws SAXException {  
        if(preTag!=null){  
            String content = new String(ch,start,length); 
            if("FULL_NAME".equals(preTag)){  
               chenxin.setFullname(content);
            }else if("TRADE_CO".equals(preTag)){  
               chenxin.setTradecode(content);
            }else if("CASE_ID".equals(preTag)){
               chenxin.setCaseid(content);
            }else if("CASE_DATE".equals(preTag)){
               chenxin.setCasedate(content);
            }else if("CASE_DEPT".equals(preTag)){
               chenxin.setCasedept(content);
            }else if("CASE_TYPE".equals(preTag)){
               chenxin.setCasetype(content);
            }
        }  
    }
   
    public void testSAX(){  
     try{
      SAXDemo demo=new SAXDemo();
      InputStream input = new FileInputStream("D:/company.xml");  
         List<ChenxinResult> demoList=demo.getResults(input);
        
   // 打开文件
   WritableWorkbook book1 = Workbook.createWorkbook(new File("D:/user3.xls "));
   // 生成名为“第一页”的工作表,参数0表示这是第一页
   WritableSheet sheet = book1.createSheet(" EXIMUSER ", 0);
   // 在Label对象的构造子中指名单元格位置是第一列第一行(0,0)
   Label label = new Label(0, 0, "编号");
   Label label1 = new Label(1, 0, "公司企业");
   Label label2 = new Label(2, 0, "用户编号");
   Label label3 = new Label(3, 0, "注册号");
   Label label4 = new Label(4, 0, "时间");
   Label label5 = new Label(5, 0, "部门");
   Label label6 = new Label(6, 0, "行为");
   
   // 将定义好的单元格添加到工作表中
   sheet.addCell(label);
   sheet.setColumnView(0,10);   
   sheet.addCell(label1);
   sheet.setColumnView(1,35);   
   sheet.addCell(label2);
   sheet.setColumnView(2,20);
   sheet.addCell(label3);
   sheet.setColumnView(3,20);
   sheet.addCell(label4);
   sheet.setColumnView(4,30);
   sheet.addCell(label5);
   sheet.setColumnView(5,30);
   sheet.addCell(label6);
   sheet.setColumnView(6,10);
   
   for(int i=0;i<demoList.size();i++){
    int column=0;
    int width=0;
    ChenxinResult result=(ChenxinResult)demoList.get(i);
    
    Label label8 = new Label(column++,i+1,result.getId());
    sheet.addCell(label8);
    sheet.setColumnView(width,10);
    
    Label label9 = new Label(column++,i+1,result.getFullname());
    sheet.addCell(label9);
    sheet.setColumnView(width+=1,35);
    
    Label label10 = new Label(column++,i+1,result.getTradecode());
    sheet.addCell(label10);
    sheet.setColumnView(width+=1,20);
    
    Label label11 = new Label(column++,i+1,result.getCaseid());
    sheet.addCell(label11);
    sheet.setColumnView(width+=1,20);
    
    Label label12 = new Label(column++,i+1,result.getCasedate());
    sheet.addCell(label12);
    sheet.setColumnView(width+=1,30);
    
    Label label13 = new Label(column++,i+1,result.getCasedept());
    sheet.addCell(label13);
    sheet.setColumnView(width+=1,30);
    
    Label label14 = new Label(column++,i+1,result.getCasetype());
    sheet.addCell(label14);
    sheet.setColumnView(width+=1,10); 
   }
   book1.write();
   book1.close();
     }catch(Exception ce){
      ce.printStackTrace();
     }
    }
   
    public static void main(String [] args){
     SAXDemo demo=new SAXDemo();
     demo.testSAX();
    }
      

注意这里需要用到jxl.jar自己到网上去下载。

 

 

以下是 ChenxinResult主要是用来组装数据

public class ChenxinResult {
 
 private String id;
 private String fullname;
 private String tradecode;
 private String caseid;
 private String casedate;
 private String casedept;
 private String casetype;
 
 public String getId() {
  return id;
 }
 public void setId(String id) {
  this.id = id;
 }
 public String getFullname() {
  return fullname;
 }
 public void setFullname(String fullname) {
  this.fullname = fullname;
 }
 public String getTradecode() {
  return tradecode;
 }
 public void setTradecode(String tradecode) {
  this.tradecode = tradecode;
 }
 public String getCaseid() {
  return caseid;
 }
 public void setCaseid(String caseid) {
  this.caseid = caseid;
 }
 public String getCasedate() {
  return casedate;
 }
 public void setCasedate(String casedate) {
  this.casedate = casedate;
 }
 public String getCasedept() {
  return casedept;
 }
 public void setCasedept(String casedept) {
  this.casedept = casedept;
 }
 public String getCasetype() {
  return casetype;
 }
 public void setCasetype(String casetype) {
  this.casetype = casetype;
 }

}

 

 

以下代码是java生成xml

public void BuildXMLDoc() throws IOException, JDOMException {
  // 创建根节点 list;
        Element root = new Element("list");
       // 根节点添加到文档中;
        Document Doc = new Document(root);
       // 此处 for 循环可替换成 遍历 数据库表的结果集操作;
       for (int i = 0; i < 5; i++) {
           //创建节点 user;
           Element elements = new Element("user");
           //给 user 节点添加属性 id;
           elements.setAttribute("id", "" + i);
           //给 user 节点添加子节点并赋值;
           //new Element("name")中的 "name" 替换成表中相应字段,setText("xuehui")中 "xuehui 替换成表中记录值;
           elements.addContent(new Element("name").setText("xuehui"));
           elements.addContent(new Element("age").setText("28"));
           elements.addContent(new Element("sex").setText("Male"));
           //给父节点list添加user子节点;
           root.addContent(elements);
       }
       Format format = Format.getPrettyFormat();
       XMLOutputter XMLOut = new XMLOutputter(format);
       XMLOut.output(Doc, new FileOutputStream("D:/user.xml"));
    }

需要用到Jdom.jar可以网上下载

1
1
分享到:
评论

相关推荐

    安装NumPy教程-详细版

    附件是安装NumPy教程_详细版,文件绿色安全,请大家放心下载,仅供交流学习使用,无任何商业目的!

    语音端点检测及其在Matlab中的实现.zip

    语音端点检测及其在Matlab中的实现.zip

    C#文档打印程序Demo

    使用C#完成一般文档的打印,带有页眉,页脚文档打印,表格打印,打印预览等

    DirectX修复工具-4-194985.zip

    directx修复工具 DirectX修复工具(DirectX repair)是系统DirectX组件修复工具,DirectX修复工具主要是用于检测当前系统的DirectX状态,若发现异常情况就可以马上进行修复,非常快捷,使用效果也非常好。

    Python手动实现人脸识别算法

    人脸识别的主要算法 其核心算法是 欧式距离算法使用该算法计算两张脸的面部特征差异,一般在0.6 以下都可以被认为是同一张脸 人脸识别的主要步骤 1 获得人脸图片 2 将人脸图片转为128D的矩阵(这个也就是人脸特征的一种数字化表现) 3 保存人脸128D的特征到文件中 4 获取其他人脸转为128D特征通过欧式距离算法与我们保存的特征对比,如果差距在0.6以下就说明两张脸差距比较小

    全国大学生信息安全竞赛知识问答-CISCN 题库.zip

    ciscn 全国大学生信息安全竞赛知识问答-CISCN 题库.zip

    JAVA+SQL离散数学题库管理系统(源代码+LW+外文翻译).zip

    JAVA+SQL离散数学题库管理系统(源代码+LW+外文翻译)JAVA+SQL离散数学题库管理系统(源代码+LW+外文翻译)JAVA+SQL离散数学题库管理系统(源代码+LW+外文翻译)JAVA+SQL离散数学题库管理系统(源代码+LW+外文翻译)JAVA+SQL离散数学题库管理系统(源代码+LW+外文翻译)JAVA+SQL离散数学题库管理系统(源代码+LW+外文翻译)JAVA+SQL离散数学题库管理系统(源代码+LW+外文翻译)JAVA+SQL离散数学题库管理系统(源代码+LW+外文翻译)JAVA+SQL离散数学题库管理系统(源代码+LW+外文翻译)JAVA+SQL离散数学题库管理系统(源代码+LW+外文翻译)JAVA+SQL离散数学题库管理系统(源代码+LW+外文翻译)JAVA+SQL离散数学题库管理系统(源代码+LW+外文翻译)JAVA+SQL离散数学题库管理系统(源代码+LW+外文翻译)JAVA+SQL离散数学题库管理系统(源代码+LW+外文翻译)

    strcmp函数应用.zip

    strcmp函数应用.zip

    蓝桥杯单片机第十一届国赛设计题试做

    蓝桥杯单片机第十一届国赛设计题试做

    基于MATLAB的pca人脸识别.zip

    基于MATLAB的pca人脸识别.zip

    520.html

    520.html

    JAVA在线考试管理系统(源代码+LW+开题报告+外文翻译+英文文献+答辩PPT).zip

    JAVA在线考试管理系统(源代码+LW+开题报告+外文翻译+英文文献+答辩PPT)

    STR710的定时器编程C语言例子,开发环境为IAR EWARM。.zip

    STR710的定时器编程C语言例子,开发环境为IAR EWARM。.zip

    基于物品的协同过滤推荐算法(Python).zip

    协同过滤算法(Collaborative Filtering)是一种经典的推荐算法,其基本原理是“协同大家的反馈、评价和意见,一起对海量的信息进行过滤,从中筛选出用户可能感兴趣的信息”。它主要依赖于用户和物品之间的行为关系进行推荐。 协同过滤算法主要分为两类: 基于物品的协同过滤算法:给用户推荐与他之前喜欢的物品相似的物品。 基于用户的协同过滤算法:给用户推荐与他兴趣相似的用户喜欢的物品。 协同过滤算法的优点包括: 无需事先对商品或用户进行分类或标注,适用于各种类型的数据。 算法简单易懂,容易实现和部署。 推荐结果准确性较高,能够为用户提供个性化的推荐服务。 然而,协同过滤算法也存在一些缺点: 对数据量和数据质量要求较高,需要大量的历史数据和较高的数据质量。 容易受到“冷启动”问题的影响,即对新用户或新商品的推荐效果较差。 存在“同质化”问题,即推荐结果容易出现重复或相似的情况。 协同过滤算法在多个场景中有广泛的应用,如电商推荐系统、社交网络推荐和视频推荐系统等。在这些场景中,协同过滤算法可以根据用户的历史行为数据,推荐与用户兴趣相似的商品、用户或内容,从而提高用户的购买转化率、活跃度和社交体验。 未来,协同过滤算法的发展方向可能是结合其他推荐算法形成混合推荐系统,以充分发挥各算法的优势。

    JAVA文件传输(lw+源代码).zip

    FTP(File Transfer Protocol)是文件传输协议的简称。 FTP的主要作用,就是让用户连接上一个远程计算机(这些计算机上运行着FTP服务器程序)查看远程计算机有哪些文件,然后把文件从远程计算机上拷到本地计算机,或把本地计算机的文件送到远程计算机去。 目前FTP服务器软件都为国外作品,例如Server_U、IIS,国内成熟的FTP服务器软件很少,有一些如(Crob FTP Server),但从功能上看来远不能和那些流行的服务器软件媲美。

    python项目源码-深度学习tensorflow的滚动轴承故障诊断方法源码(高分大作业).rar

    本项目基于深度学习TensorFlow框架,针对滚动轴承故障诊断方法进行研究。项目采用了卷积神经网络(CNN)对轴承振动信号进行特征提取和分类,实现了对滚动轴承不同故障类型的自动诊断。 在技术实现上,项目利用TensorFlow搭建了一个高效的CNN模型,通过多层卷积、池化操作以及全连接层,自动学习轴承振动信号中的故障特征。同时,采用交叉熵损失函数优化模型参数,提高故障识别率。此外,项目还集成了数据预处理、模型训练、测试评估等功能模块,方便用户快速上手并进行实验研究。 经过运行测试,该项目代码运行稳定,诊断效果良好,可广泛应用于滚动轴承故障诊断领域。对于计算机相关专业的在校学生、老师或企业员工来说,该项目是一份难得的高分大作业资源,同时也是小白学习和实际项目借鉴的优秀参考资料。请放心下载使用,为您的学习和工作提供帮助!

    超详细的SpringBoot框架入门教程 Spring Boot框架快速入门教程以大量示例讲解了Spring Boot在各类情境

    超详细的SpringBoot框架入门教程 Spring Boot框架快速入门教程以大量示例讲解了Spring Boot在各类情境中的应用,让大家可以跟着老师的思维和代码快速理解并掌握。适用于Java 开发人员,尤其是初学Spring Boot的人员和需要从传统 Spring 转向 Spring Boot 开发的技术人员。 下边是动力节点的SpringBoot教程非常适合初学入门,讲的非常详细,而且全程无废话!

    毕业设计[主机域名]ISPConfig 3.0.1.3_ispconfig3-codepub.zip

    毕业设计[主机域名]ISPConfig 3.0.1.3_ispconfig3-codepub.zip

    matlab开发-用交叉熵优化多变量宏观模型随机多极值优化.zip

    matlab开发-用交叉熵优化多变量宏观模型随机多极值优化.zip

    矩阵特征值的计算方法.zip

    矩阵特征值的计算方法.zip

Global site tag (gtag.js) - Google Analytics