1、判断一下数据库中xml功能是否已经安装成功
C:\>sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 - Production on 星期一 11月 26 10:35:23 2007
Copyright (c) 1982, 2005, Oracle.All rights reserved.
idle>conn sys/sys@doscdb as sysdba
已连接。
DOSCDB(sys)>select * from v$version;
BANNER
----------------------------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE10.2.0.1.0Production
TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production
DOSCDB(sys)>select username from dba_users;
USERNAME
-----------------------------------------------------------
DIP
TSMSYS
DBSNMP
SYSMAN
MDSYS
ORDSYS
CTXSYS
ANONYMOUS
EXFSYS
DMSYS
WMSYS
XDB
ORDPLUGINS
SI_INFORMTN_SCHEMA
MGMT_VIEW
SYS
SYSTEM
OUTLN
UOA
UBASE
UWF
UOCEAN
UBI
UTEMP
已选择24行。
--存在XDB用户
DOSCDB(sys)>DESCRIBE RESOURCE_VIEW;
名称
是否为空? 类型
----------------------------------------------------- -------- ------------------------------------
RES
XMLTYPE(XMLSchema "http://xmlns.orac
le.com/xdb/XDBResource.xsd" Element
"Resource")
ANY_PATH
VARCHAR2(4000)
RESID
RAW(16)
--从RESOURCE_VIEW 信息中可以判断XDB功能已经安装完成
2、准备xml_test.xml文件,并放在e:\testxml目录下
--xml_test.xml文件内容
PENG XML_TEST
/WEB-INF/pages/globalError.ftl
/WEB-INF/pages/redirect.ftl
/WEB-INF/pages/login.ftl
/WEB-INF/pages/globalredirect.ftl
/WEB-INF/pages/login.ftl
/WEB-INF/pages/index.ftl
/WEB-INF/pages/leftmenu.ftl
/WEB-INF/pages/top.ftl
/WEB-INF/pages/welcome.ftl
product.
product
/WEB-INF/pages/product.xls
3、创建xml表,用来存储xml 数据
DOSCDB(sys)>create table xml_test of xmltype;
表已创建。
DOSCDB(sys)>desc xml_test;
名称
是否为空? 类型
----------------------------------------------------- -------- ------------------------------------
TABLE of XMLTYPE
DOSCDB(sys)>CREATE DIRECTORY xmldir AS 'e:\testxml\';
目录已创建。
DOSCDB(sys)>INSERT INTO xml_test VALUES (XMLType(bfilename('XMLDIR', 'testxml.xml'),
2 nls_charset_id('AL32UTF8')));
已创建 1 行。
DOSCDB(sys)>commit;
提交完成。
4、如何使用呢,既然存储进去了,当然是为了更好的使用了
DOSCDB(sys)>desc user_xml_tables;
名称
是否为空? 类型
----------------------------------------------------- -------- ------------------------------------
TABLE_NAME
VARCHAR2(30)
XMLSCHEMA
VARCHAR2(700)
SCHEMA_OWNER
VARCHAR2(30)
ELEMENT_NAME
VARCHAR2(2000)
STORAGE_TYPE
VARCHAR2(17)
DOSCDB(sys)>select table_name from user_xml_tables;
TABLE_NAME
------------------------------------------------------------
XML_TEST
--取得所有文档的内容
DOSCDB(sys)>SELECT OBJECT_VALUE from xml_test;
OBJECT_VALUE
----------------------------------------------------------------------------------------------------
PENG XML_TEST
/WEB-INF/pages/leftmenu.ftl
/WEB-INF/pages/top.ftl
/WEB-INF/pages/welcome.ftl
product.
product
/WEB-INF/pages/product.xls
--取得内的内容
DOSCDB(sys)>SET LONG 10000
DOSCDB(sys)>SET PAGESIZE 100
DOSCDB(sys)>SELECT extract(OBJECT_VALUE, '/xwork')
2FROM xml_test;
DOSCDB(sys)>SELECT extract(OBJECT_VALUE, '/xwork/package')
2from xml_test;
EXTRACT(OBJECT_VALUE,'/XWORK/PACKAGE')
----------------------------------------------------------------------------------------------------
PENG XML_TEST /WEB-INF/pages/index.ftl/WEB-INF/pages/leftmenu.ftl/
WEB-INF/pages/top.ftl/WEB-INF/pages/welcome.ftlproduct.product/WEB-INF/pages/product.xls
5、牛刀小试
--简单访问
DOSCDB(sys)>SELECT extract(OBJECT_VALUE, '/xwork/package/Refpeng')
2from xml_test;
EXTRACT(OBJECT_VALUE,'/XWORK/PACKAGE/REFPENG')
----------------------------------------------------------------------------------------------------
PENG XML_TEST
--访问一下属性值看看
DOSCDB(sys)>SELECT extractvalue(OBJECT_VALUE, '/xwork/package/Refpeng')
2from xml_test;
EXTRACTVALUE(OBJECT_VALUE,'/XWORK/PACKAGE/REFPENG')
----------------------------------------------------------------------------------------------------
PENG XML_TEST
--小试 where
DOSCDB(sys)>SELECT extractValue(OBJECT_VALUE, '/xwork/package/Refpeng') "Peng Test"
2FROM xml_test
3WHERE existsNode(OBJECT_VALUE,
4
'/xwork/package[Refpeng="PENG XML_TEST "]') = 1;
Peng Test
---------------------------------------------------------------------------------------------
PENG XML_TEST
--小试update
DOSCDB(sys)>UPDATE xml_test
2SET OBJECT_VALUE =
3
updateXML(OBJECT_VALUE,
4
'/xwork/package/Refpeng/text()',
5
'PENG XML_UPDATE_TEST'
6
)
7WHERE existsNode(OBJECT_VALUE,
8
'/xwork/package[Refpeng="PENG XML_TEST "]') = 1;
已更新 1 行。
DOSCDB(sys)>COMMIT;
提交完成。
DOSCDB(sys)>SELECT extractValue(OBJECT_VALUE, '/xwork/package/Refpeng') "Peng Test"
2FROM xml_test
3/
Peng Test
----------------------------------------------------------------------------------------------------
PENG XML_UPDATE_TEST
|