Excel如何把其中的数据导出成XML,我本来以为挺简单的,试了下才发现Excel需要一个XML映射文件才能完成。开始之前都有一些基本概念,比如XML啊,DTD啊,不过大家肯定都看过HTML,就那个样,开始吧?
XML已经应用灰常灰常广泛了,从数据存储,数据表示都有它的踪迹。现在UI设计也都基于XML做了。XML包含的只是数据,数据需要有格式,这样子大家才都看得明白(没有格式似乎也看得明白,不过软件程序就不会像你那么聪明了)。用来定义XML结构的是DTD应用很广,不过现在XML Schema已经成为W3C的标准了,我也觉得XML Schema爽些,因为它自身就是一种XML的格式,还提供数据类型。更多的DTD和XML Schema的区别可以参考http://www.ibm.com/developerworks/cn/xml/x-sd/index.html
言归正传,Excel需要的映射可以通过定义一个XML Schema来实现,就是一个XSD文件。先看看官方定义:
XML Schema 是基于 XML 的 DTD 替代者。
XML Schema 描述 XML 文档的结构。
XML Schema 语言也称作 XML Schema 定义(XML Schema Definition,XSD)。
如何定义它呢?我看了下面的例子就顿悟了:
一个XML文件内容:
其对应的XML Schema XSD内容:
再看看对应的DTD,是不是不是很爽啊?
当然定义的结构文件DTD或者XSD都需要在XML文件中引入,很简单啦就不说啦。
XML Schema文件通过一些元素来定义XML文件中的一个结点,比如<heading>Reminder</heading>对应的是<xs:element name="heading" type="xs:string"/>,其中的type表示该结点数据的数据类型,这里是一个字符串。
XML Schema中还有两个奇怪的结点<xs:complexType>和<xs:sequence>。前一个表示这是一个复杂类型,相当于结点之下还有结点,一个递归的层次。<xs:sequence>是一种复合类型指示器,表示它所包含的结点都是有顺序的,当然也可以没有顺序啦。
有了一个基本的认识就开始处理一个实际问题了,有一个表格:包含两列,第一列名为Abbreviation,第二列名为Metabolite。每一列包含500行数据,要求就是将其导出成XML。根据前面的认识,我们可能设计成将数据表示成这样:
真样子相应的XML Schema应该是这样:
没有问题,但这似乎这能表示Excel表中的一行数据,也就是说我们需要Item能够出现多次,对于这个需求来说至少需要500次。如何做呢?我们就需要一个Occurrence 指示器,来定义某个元素出现的频率。它包含两个指示器:maxOccurs 指示器,minOccurs 指示器,分别设置最小和最大的重复次数。加进来就成这样,我们允许Item出现无限次:
再次设置映射关系,导出成功。
更多的XML Schema相关信息,参考http://www.w3cschool.cn/index-17.html
本文介绍了如何使用XML Schema(XSD)为Excel创建映射,以便将Excel数据导出为XML。XML Schema定义了数据结构,允许指定元素类型和顺序。在示例中,通过定义一个包含Abbreviation和Metabolite元素的复杂类型,并使用maxOccurs属性允许Item元素无限次出现,从而适应500行数据的需求。导出过程通过设置映射关系完成。

754

被折叠的 条评论
为什么被折叠?



