应用XML架构文件工作上,有时会遇到系统间数据交互的问题。之前我做过的方法是,源系统将数据导出为文本文件(TXT后缀),然后上传到目标系统,分析、读取。现在好一点,应用web service,编写一个数据接口,在程序里直接调用,而无须再经过人工上传一道工序。并且web service传送的数据,全部是XML格式,可以很方便的读取,不必再自己写分析算法。当然,也因为是XML格式,每个字段值前后各一个标记,并且是明文,如果记录很多,可能需要传送的数据量就比较大了,这可能是不够好的地方。
由于XML文件只存储数据,并无数据类型描述,因此从XML文件读入数据可能会出现数据类型与原先不符的情况。比如,有一表employee,结构如下:ID(INT),NAME(varchar(50)),在XML里表示为<EMPLOYEE><ID>1</ID><NAME>张三</NAME></EMPLOYEE>。这样,ID的类型原本为整型,而此时系统却以为是字符型!
因为这个情况我们遇到了点问题。
数据导入的时候,往往要加以分析,将导入的数据和现有数据比较,以确定是插入、更新还是删除。比较的算法,最简单当然是将两个数据集(DataSet)来个嵌套循环,逐条记录比较。不过这种方法效率不高,可以改进一下,将两个数据集排好序,然后再来比较。
怎样排序呢?从XML文件里读取数据,存放在数据集dsXml里,而现有数据,存放在数据集dsCur里,每个数据集里都只有一个DataTable。可以用DataTable的Select方法来实现排序,方法如下:
//从XML文件里读取数据
DataSet dsXml = new DataSet(“dsXml”);
DsXml.ReadXml(“employee.xml”);
//从现有数据库中读取数据。GetData是自定义的函数,从现有数据库中提取数据
DataSet dsCur = GetData();
//按照id的顺序排序。
//其中Select第一个参数是过滤条件,这里为空表示所有记录都适合;第二个参数表示排序字段
DataRow[] drsXml = dsXml.Tables[0].Select(“”,”id”);
DataRow[] drsCur = dsCur.Tables[0].Select(“”,”id”);
然后比较这两个记录集:drsXml与drsCur。
但是运行的结果却跟原先设想大相径庭。
什么原因呢?
原来就是因为在dsXml里,字段id是字符型。字符型排序不同于数值排序,如果让系统比较,”9”肯定大于”10”。因此,dsXml的排序没有得到我们预期的效果。
看来要让系统知道id是整型。如何能做到?可以结合XML架构文件。
dsXml.ReadXmlSchema("employee.xsd");
dsXml.ReadXml(“employee.xml”,XmlReadMode.InferSchema);
这样子读出来后,数据结构就跟架构文件employee.xsd里描述的一模一样了。
补充一点,本人对架构文件语法不熟悉,是先用从数据库中拿到的数据集dsCur输出来,然后再稍作修改:
dsCur. WriteXmlSchema(“employee.xsd”);
分享到:
相关推荐
框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端...
主要用于spring和mybatis的整合,实现SSM架构的应用。
基于XML的CAD文件网上发布转换方法.pdf
全面讲解了SAX、DOM、StAX、JDOM以及dom4j的应用程序编程接口,同时还囊括了最新版本的用于XML处理的Java应用程序编程接口(JAXP)和用于XML绑定的Java架构(JAXB)的相关知识。第三版还彻底重写了有关网络技术的...
本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地引导读者快速掌握java web开发。. 本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解...
本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地引导读者快速掌握java web开发。. 本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解...
的Java / C#/ C++代码生成XML架构 SOAP客户端,SOAP调试器,SOAP验证 XML数字签名XML文档的签名支持 即时图表创建用于显示和分析XML数据 JSON编辑器,JSON和XML转换 Visual Studio集成与Eclipse的集成 HTML编辑器和...
本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地引导读者快速掌握java web开发。. 本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解...
全面讲解了SAX、DOM、StAX、JDOM以及dom4j的应用程序编程接口,同时还囊括了最新版本的用于XML处理的Java应用程序编程接口(JAXP)和用于XML绑定的Java架构(JAXB)相关知识。第三版还彻底重写了有关网络技术的章节,...
本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地引导读者快速掌握java web开发。. 本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解...
的Java / C#/ C++代码生成XML架构 SOAP客户端,SOAP调试器,SOAP验证 XML数字签名XML文档的签名支持 即时图表创建用于显示和分析XML数据 JSON编辑器,JSON和XML转换 Visual Studio集成与Eclipse的集成 HTML编辑器和...
项目共包含139个文件,其中XML配置文件38个,Java源代码文件27个,编译后的Java字节码文件25个,PNG图片文件7个,JavaScript源代码文件5个,CSS样式文件4个,JPG图片文件4个,HTML页面文件4个,Properties配置文件3...
基于SpringBoot和Vue的单体架构在线投票系统设计源码,该项目包含174个文件,主要文件类型有114个xml配置文件,46个java源文件,以及4个Markdown文档用于项目说明。此外,还包括3个gitignore文件用于版本控制,2个...
项目共包含192个文件,其中XML配置文件57个,Java源代码文件57个,编译后的Java字节码文件43个,JSP页面文件13个,Properties配置文件8个,LST文件6个,IML文件4个,Git忽略配置文件1个,JSON文件1个,以及项目配置...
通过用户友好的表单编辑复杂的XML文件。 为任何XML模式生成可编辑HTML5表单! XML模式(XSD)包含大量有关XML结构中允许哪些数据以及如何呈现用户界面的信息。 此扩展:-为任何XML模式(XSD)创建即时HTML5表单; -...
项目共包含1251个文件,其中Java源代码文件379个,XML配置文件198个,Properties配置文件159个,JavaScript源代码文件115个,JSP页面文件114个,PNG图片文件54个,CSS样式文件43个,HTML页面文件35个,Shell脚本文件...
报表服务器 WebFOCUS Reporting Server概述 主要用于连接各种数据源 获取数据与执行计算 执行fex文件解析 WebFOCUS核心引擎 适配器 元数据 过程文件 延时报表过程 数据缓冲区 与各种客户端交换信息 服务器架构ppt...
文件类型包括223个Java源代码文件、48个XML配置文件、36个YAML配置文件、35个PNG图片文件、7个YAML文件、6个SQL文件、5个Markdown文档、5个TXT文档、4个VM文件和3个LauncherService文件。该架构是一个商业级项目升级...
用大量且简单的实训案例向读者介绍JSP开发环境、JSP基础应用、JavaScript的应用、文件管理技术应用及数据库管理技术应用等相关技术,初学者参考书中实训案例可以快速构建简单的B/S架构的软件项目;“进阶篇”内容...
企业应用管理系统:基于JFinal和layui开发,包含717个文件,包括143个JavaScript文件、121个GIF图像文件、113个Java类文件、107个PNG图像文件、105个HTML文件、44个CSS样式文件、13个JPG图像文件、12个SQL文件、7个...