根据XML配置规则导入Excel数据(一)定义XML规则

简介:
原创作品,允许转载,转载时请务必以超链接形式标明文章  原始出处 、作者信息和本声明。否则将追究法律责任。 http://dba10g.blog.51cto.com/764602/756528
 
定义Xml 导入规则。基本上为每个值对象,都应该对应一个配置Bean节点。
首先:为Xml 文件制定xsd验证文件。
<? xml  version ="1.0"  encoding ="UTF-8" ?> 
< xsd:schema  xmlns ="http://3g.ahong.com/schema/mrp/beans" 
   xmlns:xsd ="http://www.w3.org/2001/XMLSchema"  targetNamespace ="http://3g.ahong.com/schema/mrp/beans" > 
   < xsd:element  name ="beans" > 
     < xsd:complexType > 
       < xsd:sequence > 
        <!--  required ref , or will bring some error --> 
         < xsd:element  ref ="bean"  minOccurs ="1"  maxOccurs ="unbounded" > </ xsd:element > 
       </ xsd:sequence > 
     </ xsd:complexType > 
   </ xsd:element > 
   < xsd:element  name ="bean" > 
     < xsd:complexType > 
       < xsd:sequence > 
         < xsd:element  ref ="property"  minOccurs ="1"  maxOccurs ="unbounded" /> 
       </ xsd:sequence > 
       < xsd:attribute  name ="className"  type ="xsd:string"  use ="required"  /> 
       < xsd:attribute  name ="fileName"  type ="xsd:string"  use ="required"  /> 
       < xsd:attribute  name ="head"  type ="xsd:int"  use ="optional"  /> 
       < xsd:attribute  name ="from"  type ="xsd:int"  use ="optional"  /> 
     </ xsd:complexType > 
   </ xsd:element > 
   < xsd:element  name ="property" > 
     < xsd:complexType > 
       < xsd:attribute  name ="name"  type ="xsd:string"  use ="required"  /> 
       < xsd:attribute  name ="value"  type ="xsd:string"  use ="required"  /> 
     </ xsd:complexType > 
   </ xsd:element > 

</ xsd:schema >
 
 
第二步 建立规则 XML文件
 
<? xml  version ="1.0"  encoding ="UTF-8" ?> 
< beans  xmlns ="http://3g.ahong.com/schema/mrp/beans"  xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance" 
   xsi:schemaLocation ="http://3g.ahong.com/schema/xls/beans xlsbean.xsd" > 
<!-- fileName支持通配符--> 

< bean  className ="com.ivfly.xlsbean.test.Bean"  fileName ="*测试*.xls"  head ="4"  from ="5" > 
  <!--  bean属性名,xls中列名 顺序不要求 --> 
   < property  name ="id"  value ="编号"  nullable ="true"  seq ="0"  type ="java.lang.String" > </ property > 
   < property  name ="name"  value ="用户名"  nullable ="true"  seq ="1"  type ="java.lang.String" > </ property > 
   < property  name ="qq"  value ="QQ号"  seq ="2"  type ="java.lang.String" > </ property > 
   < property  name ="age"  value ="年龄"  seq ="3"  type ="java.lang.String"  formular ="age"  warringFormat ="%s 数据格式不正确" > </ property > 
   < property  name ="birthDate"  value ="出生日期"  seq ="4"  type ="java.util.Date" > </ property > 
</ bean > 

</ beans >
 
重点介绍一下property节点。
其中: formular 为验证规则;warringFormat 为警告格式化串。 name 对应 Bean值对象的属性名,value为Excel的列头。 其他属性,暂时没有维护。
 
第三步。解析Xml 并将配置信息初始化为对象。
BeansSpecificationUtil.java  主要为配置映射解释器
package com.ivfly.xlsbean; 


import java.io.IOException; 
import java.io.InputStream; 

import org.apache.commons.digester.Digester; 
import org.xml.sax.SAXException; 

/** 
* 获取映射配置 
* 
*/
 
public  class BeansSpecificationUtil { 
    
   /** 
    * 解析xml,获取跟元素节点 
    * @param xml,包路径 
    * @return 
    */
 
   public  static BeansSpecification getBeans (InputStream xml) { 
     
    Digester digester =  new Digester();     
     
     //当遇到<beans>时创建一个com.BeansSpecificationImpl对象,并将其放在栈顶 
    digester.addObjectCreate( "beans",  "com.ivfly.xlsbean.BeansSpecification"); 
     //根据<beans>元素的属性(attribute),对刚创建的com.BeansSpecificationImpl对象的属性(property)进行设置 
    digester.addSetProperties( "beans"); 
     //当遇到<beans>的子元素<bean>时创建一个com.BeanSpecificationImpl对象,并将其放在栈顶。 
    digester.addObjectCreate( "beans/bean",  "com.ivfly.xlsbean.BeanSpecification"); 
     // 
    digester.addSetProperties( "beans/bean"); 
     
     //将调用beans级即BeansSpecificationImpl的addBean方法,参数为BeanSpecificationImpl(栈顶元素) 
    digester.addSetNext( "beans/bean",  "addBean"); 
     
     //同样遇到<property>的时候实例化一个com.PropertySpecificationImpl对象 
    digester.addObjectCreate( "*/property",  "com.ivfly.xlsbean.PropertySpecification"); 
     //赋值 
    digester.addSetProperties( "*/property"); 
     
     //调用第二栈顶元素的addProperty方法 
    digester.addSetNext( "*/property",  "addProperty"); 
     
     //所有的配置都将装在这里 
    BeansSpecification beans= null; 
     try { 
       //解析完成后返回根元素 
      beans = (BeansSpecification) digester.parse(xml); 
    }  catch (IOException e) { 
      e.printStackTrace(); 
    }  catch (SAXException e) { 
      e.printStackTrace(); 
    } 
     
     return beans; 
  } 
} 

本文出自 “简单” 博客,请务必保留此出处http://dba10g.blog.51cto.com/764602/756528

目录
相关文章
如何根据Excel某列数据为依据分成一个新的工作表
在处理Excel数据时,我们常需要根据列值将数据分到不同的工作表或文件中。本文通过Python和VBA两种方法实现该操作:使用Python的`pandas`库按年级拆分为多个文件,再通过VBA宏按班级生成新的工作表,帮助高效整理复杂数据。
|
数据采集 数据可视化 数据挖掘
用 Excel+Power Query 做电商数据分析:从 “每天加班整理数据” 到 “一键生成报表” 的配置教程
在电商运营中,数据是增长的关键驱动力。然而,传统的手工数据处理方式效率低下,耗费大量时间且易出错。本文介绍如何利用 Excel 中的 Power Query 工具,自动化完成电商数据的采集、清洗与分析,大幅提升数据处理效率。通过某美妆电商的实战案例,详细拆解从多平台数据整合到可视化报表生成的全流程,帮助电商从业者摆脱繁琐操作,聚焦业务增长,实现数据驱动的高效运营。
|
存储 安全 大数据
网安工程师必看!AiPy解决fscan扫描数据整理难题—多种信息快速分拣+Excel结构化存储方案
作为一名安全测试工程师,分析fscan扫描结果曾是繁琐的手动活:从海量日志中提取开放端口、漏洞信息和主机数据,耗时又易错。但现在,借助AiPy开发的GUI解析工具,只需喝杯奶茶的时间,即可将[PORT]、[SERVICE]、[VULN]、[HOST]等关键信息智能分类,并生成三份清晰的Excel报表。告别手动整理,大幅提升效率!在安全行业,工具党正碾压手动党。掌握AiPy,把时间留给真正的攻防实战!官网链接:https://www.aipyaipy.com,解锁更多用法!
|
12月前
|
XML 数据采集 API
用Lxml高效解析XML格式数据:以天气API为例
免费Python教程:实战解析中国天气网XML数据,详解Lxml库高效解析技巧、XPath用法、流式处理大文件及IP封禁应对策略,助你构建稳定数据采集系统。
516 0
|
分布式计算 Hadoop 大数据
从Excel到Hadoop:数据规模的进化之路
从Excel到Hadoop:数据规模的进化之路
547 10
|
存储 Java easyexcel
招行面试:100万级别数据的Excel,如何秒级导入到数据库?
本文由40岁老架构师尼恩撰写,分享了应对招商银行Java后端面试绝命12题的经验。文章详细介绍了如何通过系统化准备,在面试中展示强大的技术实力。针对百万级数据的Excel导入难题,尼恩推荐使用阿里巴巴开源的EasyExcel框架,并结合高性能分片读取、Disruptor队列缓冲和高并发批量写入的架构方案,实现高效的数据处理。此外,文章还提供了完整的代码示例和配置说明,帮助读者快速掌握相关技能。建议读者参考《尼恩Java面试宝典PDF》进行系统化刷题,提升面试竞争力。关注公众号【技术自由圈】可获取更多技术资源和指导。
|
XML 前端开发 Java
讲解SSM的xml文件
本文详细介绍了SSM框架中的xml配置文件,包括springMVC.xml和applicationContext.xml,涉及组件扫描、数据源配置、事务管理、MyBatis集成以及Spring MVC的视图解析器配置。
463 1
|
XML Java 数据格式
Spring5入门到实战------7、IOC容器-Bean管理XML方式(外部属性文件)
这篇文章是Spring5框架的实战教程,主要介绍了如何在Spring的IOC容器中通过XML配置方式使用外部属性文件来管理Bean,特别是数据库连接池的配置。文章详细讲解了创建属性文件、引入属性文件到Spring配置、以及如何使用属性占位符来引用属性文件中的值。
Spring5入门到实战------7、IOC容器-Bean管理XML方式(外部属性文件)
|
Android开发 开发者
Android自定义View之不得不知道的文件attrs.xml(自定义属性)
本文详细介绍了如何通过自定义 `attrs.xml` 文件实现 Android 自定义 View 的属性配置。以一个包含 TextView 和 ImageView 的 DemoView 为例,讲解了如何使用自定义属性动态改变文字内容和控制图片显示隐藏。同时,通过设置布尔值和点击事件,实现了图片状态的切换功能。代码中展示了如何在构造函数中解析自定义属性,并通过方法 `setSetting0n` 和 `setbackeguang` 实现功能逻辑的优化与封装。此示例帮助开发者更好地理解自定义 View 的开发流程与 attrs.xml 的实际应用。
530 2
Android自定义View之不得不知道的文件attrs.xml(自定义属性)

相关课程

更多