ITPub博客

首页 > 数据库 > Oracle > php学习:结合使用php5和Oracle xml DB(五)

php学习:结合使用php5和Oracle xml DB(五)

Oracle 作者:ajie88661 时间:2013-06-21 14:56:00 0 删除 编辑

上一部分演示了您如何能够利用 PHP 通过标准 SQL 转移 Oracle 数据库中的 XML 数据。实际上,Oracle XML DB 为您提供了将 XML 内容转入和转出 Oracle 数据库的不同策略。 

  例如,您可以使用行业标准的互联网协议(例如 FTP、HTTP 或 WebDAV)来将 XML 内容插入到数据库中。在这种情况下,您只需将包含基于

模式的 XML 内容的文件放到 Oracle XML DB 信息库中的一个文件夹里。然后 Oracle XML DB 将隐式地把相应的行插入到被指定为 XML 模式的默

认表的表中。

  例如,为了增加一个以编程的方式通过 FTP 插入 XML 的函数,您可以向列表 1 的 MyDomDocument 类中添加一个 insertXMLByFTP() 公有方

法(如列表 9 所示)。

  代码列表 9: insertXMLByFTP — SQL 的互联网协议替代方式

public function insertXMLByFTP($tagName, $table, $user, $pswd, $ftp_dir, $host, $port=2100, $timeout=30) {try {$items = parent::getElementsByTagName($tagName);$con_id = ftp_connect($host, $port, $timeout);$login = ftp_login($con_id, $user, $pswd);ftp_chdir($con_id, $ftp_dir);for ($i = 0; $i < $items->length; $i++) {$nodeXML = parent::saveXML($items->item($i)) ."n";$dest_file = $tagName .$i .'.xml';$temp = tmpfile();fwrite($temp, $nodeXML);fseek($temp, 0);if(!ftp_fput($con_id, $dest_file, $temp, FTP_ASCII))throw new Exception("Cannot put $dest_file");fclose($temp);   }   }catch (Exception $e) {throw $e;  }print "Data have been submitted"; }

  列表 10 中的 domXMLFTP_db.php 脚本显示了工作中的 insertXMLByFTP() 方法。(在试图运行 domXMLFTP_db.php 之前,您必须删除由于之

前的脚本运行而被插入到 employee 表中的所有行,以避免违反完整性约束。)

 代码列表 10: domXMLFTP_db.PHP 执行 insertXMLByFTP 函数

addElement($dom, 'EMPLOYEES');$db = new dbConn5($user, $pswd, $conn);$sql="SELECT EMPNO, ENAME, JOB FROM EMP";$db->query($sql);while ($row = $db->fetch()) {$empl = $dom->addElement($root, 'EMPLOYEE');$empl->setAttribute('xmlns:xsi', 'httww.w3.org/2001/XMLSchema-instance');$empl->setAttribute('xsi:noNamespaceSchemaLocation', 'http://localhost:8080/public/emp.xsd');$emplno = $dom->addElement($empl, 'EMPNO', oci_result($row,'EMPNO'));$ename = $dom->addElement($empl, 'ENAME', oci_result($row,'ENAME'));$title = $dom->addElement($empl, 'TITLE', oci_result($row,'JOB'));   }$dom->insertXMLByFTP('EMPLOYEE', 'employee', 'usr', 'pswd', '/public', 'localhost'); }catch(Exception $e) {print $e->getMessage(); }?>

总结:列表 10 中的 domXMLFTP_db.php 脚本为存储在 SCOTT/TIGER 演示模式下的 emp 表中的每一个行创建了相应的基于模式

的 employee XML 文档,然后将 XML 文档作为一个文件放到 Oracle XML DB 信息库的 /public 目录中。Oracle 数据库自动依次地将相应的行插

入到 PHPUSR 数据库模式中的 XMLType 的 employee 表中。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/22000745/viewspace-1109996/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2009-06-29