根据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

目录
相关文章
|
1月前
|
XML 存储 JSON
Twaver-HTML5基础学习(19)数据容器(2)_数据序列化_XML、Json
本文介绍了Twaver HTML5中的数据序列化,包括XML和JSON格式的序列化与反序列化方法。文章通过示例代码展示了如何将DataBox中的数据序列化为XML和JSON字符串,以及如何从这些字符串中反序列化数据,重建DataBox中的对象。此外,还提到了用户自定义属性的序列化注册方法。
39 1
|
2月前
|
XML 数据采集 存储
使用Java和XPath在XML文档中精准定位数据
在数据驱动的时代,从复杂结构中精确提取信息至关重要。XML被广泛用于数据存储与传输,而XPath则能高效地在这些文档中导航和提取数据。本文深入探讨如何使用Java和XPath精准定位XML文档中的数据,并通过小红书的实际案例进行分析。首先介绍了XML及其挑战,接着阐述了XPath的优势。然后,提出从大型XML文档中自动提取特定产品信息的需求,并通过代理IP技术、设置Cookie和User-Agent以及多线程技术来解决实际网络环境下的数据抓取问题。最后,提供了一个Java示例代码,演示如何集成这些技术以高效地从XML源中抓取数据。
使用Java和XPath在XML文档中精准定位数据
|
20天前
|
XML 存储 移动开发
|
14天前
|
XML Web App开发 数据格式
HTML 页面显示 XML 数据
10月更文挑战第2天
|
18天前
|
XML JSON 前端开发
C#使用HttpClient四种请求数据格式:json、表单数据、文件上传、xml格式
C#使用HttpClient四种请求数据格式:json、表单数据、文件上传、xml格式
197 0
|
5月前
|
XML JavaScript 前端开发
属性和方法向 XML DOM 定义了编程接口
XML DOM 提供编程接口,通过属性和方法操作XML结构。使用JavaScript等语言,可访问和修改节点。属性如nodeName、nodeValue揭示节点信息,方法如getElementsByTagName、appendChild、removeChild实现查找、添加和删除节点功能。节点对象x的应用示例贯穿其中。
|
2月前
|
XML JSON Java
使用IDEA+Maven搭建整合一个Struts2+Spring4+Hibernate4项目,混合使用传统Xml与@注解,返回JSP视图或JSON数据,快来给你的SSH老项目翻新一下吧
本文介绍了如何使用IntelliJ IDEA和Maven搭建一个整合了Struts2、Spring4、Hibernate4的J2EE项目,并配置了项目目录结构、web.xml、welcome.jsp以及多个JSP页面,用于刷新和学习传统的SSH框架。
55 0
使用IDEA+Maven搭建整合一个Struts2+Spring4+Hibernate4项目,混合使用传统Xml与@注解,返回JSP视图或JSON数据,快来给你的SSH老项目翻新一下吧
|
4月前
|
Android开发 开发者
Android UI设计中,Theme定义了Activity的视觉风格,包括颜色、字体、窗口样式等,定义在`styles.xml`。
【6月更文挑战第26天】Android UI设计中,Theme定义了Activity的视觉风格,包括颜色、字体、窗口样式等,定义在`styles.xml`。要更改主题,首先在该文件中创建新主题,如`MyAppTheme`,覆盖所需属性。然后,在`AndroidManifest.xml`中应用主题至应用或特定Activity。运行时切换主题可通过重新设置并重启Activity实现,或使用`setTheme`和`recreate()`方法。这允许开发者定制界面并与品牌指南匹配,或提供多主题选项。
68 6
|
4月前
|
XML 存储 JavaScript
50. 【Android教程】xml 数据解析
50. 【Android教程】xml 数据解析
55 1
|
4月前
|
XML JavaScript 前端开发
属性和方法向 XML DOM 定义了编程接口
XML DOM 是一个编程接口,它将XML表示为节点对象集合,可通过JavaScript等语言访问。接口通过属性和方法定义,属性如nodeName、nodeValue显示节点信息,方法如getElementsByTagName、appendChild、removeChild执行操作。例如,x.nodeName返回节点名称,x.appendChild(node)添加子节点。