应用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”);
分享到:
相关推荐
总的来说,“XML架构完整Reference”是IT专业人士深入理解XML和其架构的一个重要资源,能够帮助开发者构建更加健壮和规范的XML应用。通过学习和实践,你可以提升在数据处理和交换领域的专业能力,为各种项目提供稳定...
一个XML架构文件可以与多个XML实例文档关联,确保所有实例都遵循相同的规则。 下面是一个简单的XML架构模板的例子: ```xml <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> ``` ...
Java绑定XML架构是连接Java应用程序与XML文档的重要桥梁,它极大地简化了开发者处理XML文档的工作流程,提高了开发效率。通过本文的介绍,相信您已经对Java绑定XML架构有了更深入的理解。在实际开发过程中,根据具体...
本主题聚焦于"C# 3层架构操作XML文件",这涉及到使用C#进行XML数据处理以及设计模式中的三层架构。三层架构是一种常见的软件设计模式,它将应用分为表现层(UI)、业务逻辑层(BLL)和数据访问层(DAL),以实现代码...
这些文件允许用户在不涉及底层硬件代码的情况下,通过软件来定义和管理自动化系统的架构。例如,它们可以定义每个 EtherCAT 设备的地址、数据类型、数据长度以及它们之间的通信关系。 Beckhoff_EtherCAT_XML.zip 和...
- VS自带了一些XML工具,如XML编辑器、XML验证器、XML架构设计器等,它们能帮助开发者高效地处理XML文件。 10. **调试XML**: - 当XML数据与Web服务或SOAP通信时,VS的“XML”工具窗口可以用来查看和调试XML消息...
XML应用架构关注的是如何在软件开发中应用XML技术。一个典型的架构模式是MVC(Model-View-Controller),其中XML可以作为数据交换的格式,将模型层的数据转换成适合视图层展示的格式。此外,XML的硬件设备无关、软件...
### XML文件的加密与解密 #### 一、引言 随着互联网技术的发展以及数据安全意识的提升,对于敏感信息的保护变得尤为重要。XML(可扩展标记语言)作为一种常用的数据交换格式,在诸多应用场景中扮演着重要角色。...
XML 文件是什么?如何打开 XML 文件? XML(Extensible Markup Language,扩展性标识语言)是一种...XML 文件是一种广泛应用于数据交换和存储的标记语言,可以使用多种软件打开和处理,包括 Excel、Netscape 6 等。
XML(eXtensible Markup Language)是一种用于存储和传输数据的标记语言,它以其结构化、可扩展性和易于解析的特点广泛应用于软件开发、数据分析、Web服务等领域。本示例将帮助初学者理解如何在编程中读取和写入XML...
你可以手动设置映射,或者导入XML架构(XSD文件)来自动生成映射。 3. **设置XML映射属性**:调整映射属性以控制XML生成的方式。例如,可以设置是否包含列标题、数据验证规则等。此外,还可以设置命名空间,以便在...
在本文中,我们将深入探讨如何使用C#编程语言在Windows Forms(Winform)环境中实现一个基于三层架构的操作XML文件的系统。这个系统涵盖了XML文件的基本操作:增加数据、删除数据、修改数据以及查询数据。首先,让...
XML文件通常遵循一定的架构,即XML Schema或DTD(Document Type Definition),来确保数据的正确性。 二、C#中读取XML文件 在C#中,我们通常使用System.Xml命名空间下的类来处理XML。以下是使用XDocument类读取XML...
这个"SV660N系列EtherCAT通信XML文件"是专门针对这一设备系列设计的配置文件,它允许用户通过XML格式来设定和配置EtherCAT通信参数。 XML(eXtensible Markup Language)是一种标记语言,常用于数据交换、配置文件...
总结,"基于XMpLant架构3.3.3(Proteus架构)的XML文件查看器Java"项目是一个以Java实现的XML解析和查看工具,利用了强大的XMpLant/Proteus架构。通过分析"xpview-master"的源码,我们可以学习到XML处理、Java GUI...
通过学习这个教程,系统架构设计师可以了解如何在实际项目中有效地利用XML进行数据管理、跨系统通信和应用程序设计。掌握XML不仅可以提升在系统架构设计中的专业素养,也有助于解决复杂的数据交换问题,提高系统的可...
它可以可视化XSD文件,将复杂的模式定义转化为易于理解的图形,帮助开发者更好地理解和创建XML架构。 总之,XML Marker是一款优秀的XML编辑器,其强大的功能和用户友好的界面使得XML文件的处理变得更加高效。无论你...
总结来说,SpringMVC中的XML配置文件是系统架构的核心,它们定义了bean的装配和行为。通过`ApplicationContext`加载这些配置,Spring能够创建并管理bean实例。结合JSP页面,我们可以构建出完整的Web应用程序。理解和...
本压缩包包含了Struts2的核心库jar文件以及相关的XML配置文件,这些都是开发Struts2应用的基础组件。 **1. Struts2核心jar包** Struts2的核心jar包是实现框架功能的关键,主要包括以下几个部分: - **struts2-core...
文档中还提到了实践层面的内容,例如web.xml配置文件的编写。在SpringMVC中,web.xml用于配置前端控制器DispatcherServlet,包括其初始化参数、上下文配置类以及启动时加载等设置。这些配置信息确保了SpringMVC能够...