WEB开发网
开发学院数据库Oracle 使用XSU在数据库中存储和检索XML 阅读

使用XSU在数据库中存储和检索XML

 2007-06-21 12:33:13 来源:WEB开发网   
核心提示: 接下来为将放入数据库行中的元素设置标签,设置行标签为‘null’将使得最顶层的标签对应到数据库的行,使用XSU在数据库中存储和检索XML(4),在本例中,设置行标签为journal,你可以将整个XML分解成具有单个表关系的小块,然后插入到表中,这样示例XML文档中每

接下来为将放入数据库行中的元素设置标签。设置行标签为‘null’将使得最顶层的标签对应到数据库的行。在本例中,设置行标签为journal,这样示例XML文档中每个journal标签将对应到数据库中的一行:

  oracleXMLSave.setRowTag("journal");

最终,使用下面的代码,将示例XML文档转成一个数据库表:

  oracleXMLSave.insertXML(oracleXMLSave.getURL(
  file://c:/catalog/catalog.xml));

在这个例子中,XSLT文件input.xslt被应用到示例XML文档,然后这个文档被保存到数据库中。

SQL数据库到XML文档的映射

为了将数据进行反向的映射——从数据库表到XML——你使用OracleXMLQuery类。

XSU会为数据库表的每个列创建一个对应的XML元素,但是不会创建元素的属性。同样,为了创建元素的属性,你对从数据库表中创建的XML文档应用XSLT。

下面是具体的步骤。首先,导入OracleXMLQuery类:

  importoracle.xml.sql.query.OracleXMLQuery;

接着,新建一个OracleXMLQuery对象实例:

 OracleXMLQueryquery=newOracleXMLQuery(
  conn,"SELECTJOURNAL_TITLE,PUBLISHER,EDITION,"+
  "ARTICLE_SECTION,TITLE,AUTHORFROMJOURNAL");

在前面的代码中,conn是用于查询数据库的JDBC连接。

设置你想要OracleXMLQuery对象用来产生最终包含元素属性的XML文档的XSLT stylesheet:

  ReaderxsltReader=newFileReader(
  newFile("c:/catalog/output.xslt"));
  query.setXSLT(xsltReader,null);

你可以在Listing 3中看到这个output.xslt的XSLT。

接下来,设置行标签为被产生的XML文档中将对应到数据库表行的元素标签。

  query.setRowTag("journal");

最终,从JOURNAL数据库表中产生XML文档:

  StringxmlString=query.getXMLString();

在前面的例子中,OracleXMLQuery实例对XSU产生的XML文档应用设好的output.xslt的stylesheet,将产生(重建)在Listing 1中列出的XML文档。带有属性的XML文档也可以通过修改SQL SELECT语句来产生,而不是应用XSLT,但是这样产生的XML文档中root元素是ROWSET,而不是catalog,并且行元素是ROW,而不是journal。下面给出能够为JOURNAL._TITLE、PUBLISHER、EDITION和ARTICLE_SECTION列创建属性的SQL语句:

  SELECTJOURNAL_TITLE"@title",PUBLISHER"@publisher",
  EDITION"@edition",ARTICLE_SECTION"@section",
  TITLE,AUTHORFROMJOURNAL

换句话说,你看到的两个方法将XML文档存储在数据库中,然后检索出原始文档的一份拷贝。在这个项目的可下载代码中,你会找到XMLToDatabase.java程序,以及样本XML文件。

所以,你已经了解了一种使用XSLT stylesheet来存储和检索XML元素属性的变通方法。虽然这篇文章仅仅是专注于XSU原生的从单个数据库表存储和检索文件的能力,假如你想要多做一些额外的工作,你可以将整个XML分解成具有单个表关系的小块,然后插入到表中。你还可以使用可更新视图。

上一页  1 2 3 4 

Tags:使用 XSU 数据库

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接