最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

XML数据到一般关系数据库数据的转换

来源:动视网 责编:小OO 时间:2025-10-01 02:02:20
文档

XML数据到一般关系数据库数据的转换

XML数据到一般关系数据库数据的转换摘要:随着Internet的不断发展,关系数据库的局限性也越来越明显起来,也给数据库技术提出了一个必须面对的重要问题:即如何有效地存储和管理Web上以指数增长着的数据(文档),使它们既能被高效地操作和维护,又能在Web这个平台上方便地表示和交换。在这样的背景下,XML(ExtensibleMarkupLanguage—可扩展标记语言)诞生了。本文着重介绍了如何将XML文件数据导入一般关系数据库(本文以oracle关系数据库为例)的具体方法。关键词:XML、关
推荐度:
导读XML数据到一般关系数据库数据的转换摘要:随着Internet的不断发展,关系数据库的局限性也越来越明显起来,也给数据库技术提出了一个必须面对的重要问题:即如何有效地存储和管理Web上以指数增长着的数据(文档),使它们既能被高效地操作和维护,又能在Web这个平台上方便地表示和交换。在这样的背景下,XML(ExtensibleMarkupLanguage—可扩展标记语言)诞生了。本文着重介绍了如何将XML文件数据导入一般关系数据库(本文以oracle关系数据库为例)的具体方法。关键词:XML、关
XML数据到一般关系数据库数据的转换

 

摘  要:随着Internet的不断发展,关系数据库的局限性也越来越明显起来,也给数据库技术提出了一个必须面对的重要问题:即如何有效地存储和管理Web上以指数增长着的数据(文档),使它们既能被高效地操作和维护,又能在Web这个平台上方便地表示和交换。在这样的背景下,XML(Extensible Markup Language—可扩展标记语言)诞生了。本文着重介绍了如何将XML文件数据导入一般关系数据库(本文以oracle关系数据库为例)的具体方法。

关键词:XML、 关系数据库、 interface、 data exchange、oracle

Data Exchange among XML and Relational databases

Abstract:With the development of Internet, the disadvantages of traditional relational database are becoming more and more obviously. There are several problems with which we have to confronted. For instance, how can we save and manage the increasing data on the Internet efficiently and effectively, and, how can we exchange such data on the web? In this situation, XML (Extensible Markup Language) was created to solve these problems.In this article, I focus on exchanging the data between XML and traditional relational database.

Keywords: XML、 relational database、 interface、 data exchange、oracle

0  引    言

   XML是Extensible Markup Language的简写,是由W3C所发展的。可以上网页设计人员自行定义TAG的延伸格式,可以用在自由性的数据库或是各种文件格式上,用来接收与应用各种网页的须求。 

XML是一个精简的SGML,它将SGML的丰富功能与HTML的易用性结合到Web的应用中。XML要比HTML强大得多,它不再是固定的标记,而是允许定义数量不限的标记来描述文档中的资料,允许嵌套的信息结构。HTML只是Web显示数据的通用方法,而XML提供了一个直接处理 Web 数据的通用方法。HTML着重描述Web页面的显示格式,而XML着重描述的是Web页面的内容。

相对于数据库技术,XML技术在数据应用方面具有很多优点。第一,跨平台。XML文件为纯文本文件,不受操作系统、软件平台的。 第二,易表义。XML具有基于Schema自描述语义的功能,容易描述数据的语义,这种描述能为计算机理解和自动处理。第三,XML不仅可以描述结构化数据,还可以有效描述半结构化,甚至非结构化数据。

总之,XML为基于Web的应用提供了一个描述数据和交换数据的有效手段。HTML描述了显示全球数据的通用方法,而XML提供了直接处理全球数据的通用方法。

1 XML与数据库的数据转换原理

XML和关系数据库在数据应用和数据管理方面各有优势,应是一种相辅相成、扬长避短的关系。 

从技术角度讲,“以数据库为存贮手段,以 XML为交换载体”的数据管理模式是一种趋势。XML存放在关系数据库中, XML数据以虚拟XML文档的形式存在。本文的重点即着重讲解:如何将xml数据转化为关系数据库数据。

为了在XML文件和数据库之间交换数据,必须将XML文件的schema(DTD,XML Schema, RELAX NG等)映射到数据库的schema。用于数据转换的软件位于这种映射的上层。该软件可以使用XML Query语言(如XPath,XQuery,或其他专用语言)或简单地按照映射(SELECT * FROM Table的XML对应形式)转换数据。

对于后者,文档的结构必须完全符合映射所要求的结构。由于通常不易做到这点,使用这种策略的产品一般要和XSLT一起使用。在数据转换到数据库之前,先将文件按照映射所要求的结构进行转换,然后转存数据。相应地,数据从数据库中取出以后,结果文件要被转换成应用程序所需的结构。

1.1  映射[XML]文件Schema到数据库Schema (Mapping Document Schemas to Database Schemas)

文件schema到数据库schema的映射是在元素类型、属性和文本上进行的。这时几乎总是忽略物理结构(例如实体、CDATA部分及编码信息)及某些逻辑结构(如处理指令、注释以及元素和PCDATA在父元素内出现的顺序)。这样做是自然而然的,因为数据库和应用程序只需关心XML文件中的数据。

这种方法的一个问题是能否保证文件的往返 -- 将文件中的数据存入数据库后,又从数据库中的数据重新构建文件。将一个XML文件的schema映射到数据库的schema有两种方法:基于表格的映射和对象-关系映射。 

1.1.1  基于表格的映射 (Table-Based Mapping)

许多转换XML到数据库的中间软件都采用基于表格的映射。它把XML文件看作一个(或一组)表格,也就是说,XML文件的结构必须是下面这种样子,如果只是单一表格的话,就不再需要元素和其他

元素: 

...

...

            ...

            ...

         ...

         ...

      ...

根据所用软件的不同,可以将各字段数据以子元素的形式或以属性的形式存储,同样也可以指定这些元素或属性的名字。此外,采用基于表格映射方式的软件还可能允许在文件开始的地方包含表格或各字段的元数据,或者将其作为各表格或元素的属性。注意这里所说的“表格”是泛指的表格。当将数据从数据库中转到XML文件时,“表格”可以是任何结果集,反之,“表格”可以是普通的表格或可更新的视图。 

基于表格的映射对存取关系型数据比较适用,比如在两个关系型数据库之间转换数据。其明显不足就是不适于格式不符的XML文件。 

1.1.2  对象-关系映射 (Object-Relational Mapping)

所有支持XML的关系型数据库和某些中间件都可以使用对象-关系的映射方式。它将XML文件中的数据视为特定的对象树的模型。在这个模型中,元素及其类型、元素内容或混合内容(复合元素类型)通常被视为类。只具有PCDATA内容的元素(简单元素类型)、属性以及PCDATA都被当作简单属性。然后通过传统的对象-关系映射技术或 SQL 3的对象视图将该模型映射到关系型数据库。也就是说,类被映射到表格,简单属性被映射到字段,而值为对象属性被映射为成对的主键/外键(primary key/foreign key)。

(所谓“对象-关系映射”有些名不副实。因为对象树可以被直接映射到面向对象型和层次型数据库,然而,但是由于大多数使用这种映射方式的主流产品使用的其实是关系型数据库,所以“对象-关系映射”也就广为人知。) 

在理解这种映射所用的对象模型的时候要知道,这个对象模型不是文件对象模型(DOM)。所有XML文件的DOM都是一样的,而上述描述文件数据的模型对于每个DTD所定义的XML文件都不一样,例如,上述销售订单的模型是一个由四个类所组成的对象树--SalesOrder, Customer, Item, 和Part, 如下图所示: 

                    SalesOrder

                   /    |    \

             Customer   Item   Item

                         |      |

                        Part   Part

在由同一个文件产生的DOM中,对象树的组成是元素、属性和文本:

                          元素 --- 属性

                    (SalesOrder) (SONumber)

               ____/   /   \\   \\_____

              /       /     \\        \

          元素      文本     元素     元素

     (Customer) (OrderDate)  (Item)    (Item)

          |                    |         |

         etc.                 etc.      etc.

模型中的对象是否被实例化要取决于所用的软件。有些软件允许依据模型产生类,然后可以在程序中使用由这些类所产生的对象。在这些产品中,数据是在XML文件 - 对象 -数据库之间传递的。其他产品是直接在XML文件和数据库之间进行数据转换的,对象只是作为这种过程的可视化帮助工具。生成这些中间对象是否有用完全取决于你的应用程序。 

(根据Sun的 Java Architecture for XML Binding,XML文件与对象的绑定通常被称为XML数据绑定(XML data binding),有些产品支持XML数据绑定,其中许多还可以在对象和数据库之间进行数据交换,更多的信息,请看 XML数据绑定相关资源 XML Data Binding Resources.)

2将XML数据转化为ORACLE数据库数据

为了解决把 XML 有效的、自动的转换出入关系数据库的问题有各种方式。数据库厂商Oracle已经开发了转换 XML 到数据库表中的辅助工具。

Oracle XML SQL Utility 把 XML 文档元素建模为一组嵌套的表。通过使用 Oracle 对象数据类型建模套入的元素。"SQL-to-XML"转换使用被对象数据类型引用的表,和嵌套的元素之间的一到一关联来构造 XML 文档。"XML-to-SQL"可能要求数据模型的改进(从关系转换到对象-关系)或重新构造最初的 XML 文档。

2.1  存储 XML 在数据库中

使用 OracleXMLSave 来存储XML 文档到对象关系模型中;insertXML 方法进行实际的数据插入。

import java.sql.*;

import oracle.xml.sql.dml.OracleXMLSave;

public class testXMLInsert

{

    public static void main(String args[])

        throws SQLException

    {

        Connection conn = getConnection("yly", "yly");

        OracleXMLSave sav = new OracleXMLSave(conn, "yly. FXTRADE");

        // Assume that the user passes in this document as 0-arg

        sav.insertXML(args[0]);

        sav.close();

    }

    ...

如果 XML 和在数据库中的对象-关系模型是同步的则一切正常,但是如果不同呢? 在这种情况下你有两种选择。

调整对象-关系模型 -- 可以构造一个可修改的对象-关系视图来完成多表修改;或者,作为替代,使用 XSLT,可以把  XML 文档分解成一组"平坦的"子文档。XSU 不允许属性值的存储;它建议你把属性转换成元素。

2.2  Oracle XSU 的总结

通过对象-关系模型构造规则建模 XML 到 SQL 映射: 把每个嵌套的 XML 元素映射在适当的类型的一个对象引用上。映射规则被暗含的嵌入到数据库模型中。

Java API 由类 OracleXMLQuery 和 OracleXMLSave 组成。

3结束语

本文阐述了XML与一般关系数据库之间的数据转换,以及在oracle数据中如何有效地存储XML数据。由于篇幅有限,本文只列出较为重要的原代码,而是把重点放在描述XML与一般关系数据库数据交换的原理与流程上。相信XML在未来的EDI(Electronic Document InterChange)中将发挥主流作用,不久的将来各行业都一定会出现自己的通用的XML标记语言,XML的应用也会越来越广泛,它最终将取代一般标记性语言,如HTML,在网络信息的主导地位。

参考文献:

[1]  François Yergeau, Tim Bray, Jean Paoli, C. M. Sperberg-McQueen, Eve Maler. Extensible Markup Language (XML) 1.0 (Third Edition) W3C Recommendation 2004.02, 

[2]  Tim Bray, Dave Hollander, Andrew Layman. Namespaces in XML W3C Recommendation 1999.01, [3]  Brett McLaughlin . Java and XML(Second Edition)2004.02 

[4]  Muench. 构建Oracle XML应用程序 2003.02 Steve . 张静,宋锐,宋震,石东海 译

[5]  Brett McLaughlin . Java与XML数据绑定 2002.12 李二勇,祁力 译

文档

XML数据到一般关系数据库数据的转换

XML数据到一般关系数据库数据的转换摘要:随着Internet的不断发展,关系数据库的局限性也越来越明显起来,也给数据库技术提出了一个必须面对的重要问题:即如何有效地存储和管理Web上以指数增长着的数据(文档),使它们既能被高效地操作和维护,又能在Web这个平台上方便地表示和交换。在这样的背景下,XML(ExtensibleMarkupLanguage—可扩展标记语言)诞生了。本文着重介绍了如何将XML文件数据导入一般关系数据库(本文以oracle关系数据库为例)的具体方法。关键词:XML、关
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top