`

XML TYPE Detail

阅读更多

XMLTYPE has built-in functions to allow us to manipulate the data values being placed into the column defined as SYS.XMLTYPE. Data may be inserted into the table using the sys.xmltype.createxml procedure like this:

SQL> CREATE TABLE testxml (id NUMBER(3), dt SYS.XMLTYPE);

Table created.

SQL>
SQL>
SQL> INSERT INTO testxml VALUES(111,
  2  sys.xmltype.createxml(
  3  '<?xml version="1.0"?>
  4  <customer>
  5  <name>Joe Smith</name>
  6  <title>Mathematician</title>
  7  </customer>'))
  8  /

1 row created.

SQL>
SQL> SET LONG 2000
SQL>
SQL> SELECT *
  2  FROM testxml
  3  /

ID                                        DT
------------------------------
111            <?xml version="1.0"?><customer><name>Joe Smith</name><title>Mathematician</title></customer>


SQL>
SQL> drop table testxml;

Table dropped.

SQL>

 Use sys.xmltype.createxml to add XML data to table

SQL> CREATE TABLE testxml (id NUMBER(3), dt SYS.XMLTYPE);

Table created.

SQL>
SQL>
SQL> INSERT INTO testxml VALUES(111,
  2  sys.xmltype.createxml(
  3  '<?xml version="1.0"?>
  4  <customer>
  5  <name>Joe Smith</name>
  6  <title>Mathematician</title>
  7  </customer>'))
  8  /

1 row created.

SQL>
SQL> SET LONG 2000
SQL>
SQL> SELECT *
  2  FROM testxml
  3  /

ID     DT
----------------------------------------------------------------------------------------
111    <?xml version="1.0"?><customer><name>Joe Smith</name><title>Mathematician</title></customer>


SQL>
SQL> SELECT t.dt.getclobval()
  2  FROM testxml t
  3  WHERE ROWNUM < 2
  4  /

T.DT.GETCLOBVAL()
--------------------------------------------------------------------------------
<?xml version="1.0"?>
<customer>
<name>Joe Smith</name>
<title>Mathematician</title>
</customer>


SQL>
SQL> drop table testxml;

Table dropped.

SQL>
SQL>

 

Retrieve value from SYS.XMLTYPE column

SQL> CREATE TABLE testxml (id NUMBER(3), dt SYS.XMLTYPE);

Table created.

SQL>
SQL>
SQL> INSERT INTO testxml VALUES(111,
  2  sys.xmltype.createxml(
  3  '<?xml version="1.0"?>
  4  <customer>
  5  <name>Joe Smith</name>
  6  <title>Mathematician</title>
  7  </customer>'))
  8  /

1 row created.

SQL>
SQL> SET LONG 2000
SQL>
SQL> SELECT *
  2  FROM testxml
  3  /

ID              DT
------------------------------------------------------------------------------------------------------------
111             <?xml version="1.0"?><customer><name>Joe Smith</name><title>Mathematician</title></customer>


SQL>
SQL>
SQL> SELECT *
  2  FROM testxml t
  3  WHERE t.dt.getclobval() LIKE '%Joe%'
  4  /

ID        DT
------------------------------------------------------------------------------------------------------
111       <?xml version="1.0"?><customer><name>Joe Smith</name><title>Mathematician</title></customer>


SQL>
SQL> drop table testxml;

Table dropped.

SQL>
SQL>

 

Individual fields from the XMLTYPE'd column may be found using the EXTRACTVALUE function like this:

SQL>
SQL>
SQL> --EXTRACTVALUE is an Oracle function that uses an XPath expression,
SQL>
SQL> CREATE TABLE testxml (id NUMBER(3), dt SYS.XMLTYPE);

Table created.

SQL>
SQL>
SQL> INSERT INTO testxml VALUES(111,
  2  sys.xmltype.createxml(
  3  '<?xml version="1.0"?>
  4  <customer>
  5  <name>Joe Smith</name>
  6  <title>Mathematician</title>
  7  </customer>'))
  8  /

1 row created.

SQL>
SQL> SET LONG 2000
SQL>
SQL> SELECT *
  2  FROM testxml
  3  /

ID      DT
----------------------------------------------------------------------------------------------------
111     <?xml version="1.0"?><customer><name>Joe Smith</name><title>Mathematician</title></customer>


SQL>
SQL> select EXTRACTVALUE(t.dt,'//customer/name') from testxml t;

EXTRACTVALUE(T.DT,'//CUSTOMER/NAME')
-----------------------------------------------------------------------------------------
Joe Smith

SQL>
SQL>
SQL> drop table testxml;

Table dropped.

SQL>
SQL>

 

Creation of tables using XMLType data type and set the xml schema

SQL>
SQL> CREATE TABLE xml_or (
  2     id    NUMBER PRIMARY KEY,
  3     doc   XMLTYPE)
  4     XMLTYPE doc STORE AS OBJECT RELATIONAL
  5        XMLSCHEMA "http://127.0.0.1/xdoc.xsd"
  6        ELEMENT "doc"
  7  /

 

Insert xml document to a XMLType column with xmltype function

SQL> CREATE TABLE myTable(
  2      id  NUMBER PRIMARY KEY,
  3      emps XMLType NOT NULL
  4  );

Table created.

SQL>
SQL> INSERT INTO myTable VALUES (1, xmltype('<?xml version="1.0" standalone="no"
 ?>
  2  <emps>
  3      <emp>
  4          <home_address>address 1</home_address>
  5      </emp>
  6  </emps>')
  7  );

1 row created.

SQL>
SQL>
SQL> select extract(emps, '/emps/emp/home_address/text()' )
  2  from myTable
  3  /



EXTRACT(EMPS,'/EMPS/EMP/HOME_ADDRESS/TEXT()')
------------------------------------------------------
address 1

1 row selected.

SQL>
SQL>
SQL> drop table myTable;

Table dropped.

SQL>
SQL>
SQL> 
 
 

 

PL/SQL ability to access text within an XML document in the database

SQL> CREATE TABLE myTable
  2  (id  NUMBER PRIMARY KEY
  3  ,doc XMLType NOT NULL)
  4  XMLTYPE doc STORE AS CLOB
  5  /

Table created.

SQL>
SQL>
SQL> 
SQL> DECLARE
  2      v_doc  XMLType;
  3      v_text varchar2(100);
  4  BEGIN
  5      select doc into v_doc from myTable
  6      where id = 2;
  7
  8      v_text := v_doc.extract('/message/body/text()' ).getstringval;
  9
 10      dbms_output.put_line(v_text);
 11  END;
 12  /

SQL>
SQL> drop table myTable;

Table dropped.

SQL>

 

Query xmltype column

SQL> create table myTable(
  2     id number(9),
  3     myValue xmltype
  4  );

Table created.

SQL> begin
  2    dbms_xmlschema.registerSchema ('http://d.com/myType.xsd',xdbURIType('/xsd/myType.xsd').getClob(),True,True,False,True);
  3  end;
  4  /


SQL>
SQL> insert into myTable values (67, XMLTYPE('<myType xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://d.com/myType.xsd">
  2       <value1>1</value1>
  3       <value2>2</value2>
  4   </myType>'))
  5  /

1 row created.

SQL>
SQL> select * from myTable;



   emp
Number
------
MYVALUE
------------------------------------------------------
    67
<myType xmlns:xsi="http://www.w3.org/2001/XMLSchema-in
stance" xsi:noNamespaceSch

1 row selected.

SQL>
SQL> drop table myTable;

Table dropped.

 

Store an XMLType type data in clob

SQL> CREATE TABLE myTable
  2    (myID            NUMBER PRIMARY KEY,
  3     myValue     XMLTYPE )
  4     XMLTYPE myValue STORE AS CLOB
  5  /

Table created.



SQL>
SQL> drop table myTable;

Table dropped.

SQL>
SQL>

 Use value function with single xmltype table

SQL> create table myTable of xmltype;

Table created.

SQL>
SQL> insert into myTable values(XMLTYPE('
  2    <customer>
  3     <name>Chris</name>
  4      <telephone>123 555-1234</telephone>
  5    </customer>'))
  6  /

1 row created.

SQL>
SQL> select * from myTable;



SYS_NC_ROWINFO$
------------------------------------------------------

  <customer>
   <name>Chris</name>
    <telephone>123 555-1234</telephone>
  </

1 row selected.

SQL>
SQL> update myTable c
  2  set value(c) = updateXML(value(c), '/customer/name/text()','new value')
  3  /

1 row updated.

SQL>
SQL>
SQL> select extractvalue(value(c),'/customer/telephone')
  2  from myTable c
  3  where existsnode(value(c),'/customer/name = "Chris"') = 1
  4  /

no rows selected

SQL>
SQL> drop table myTable;

Table dropped.

SQL>

 Use xmltype to convert xml string to xmltype data

SQL>
SQL>
SQL> CREATE TABLE myTable(
  2      id  NUMBER PRIMARY KEY,
  3      emps XMLType NOT NULL
  4  );

Table created.

SQL>
SQL> INSERT INTO myTable VALUES (1, xmltype('<?xml version="1.0" standalone="no"
 ?>
  2  <emps>
  3      <emp>
  4          <home_address>address 1</home_address>
  5      </emp>
  6  </emps>')
  7  );

1 row created.

SQL>
SQL>
SQL> select extract(emps, '/emps/emp/home_address/text()' )
  2  from myTable
  3  /



EXTRACT(EMPS,'/EMPS/EMP/HOME_ADDRESS/TEXT()')
------------------------------------------------------
address 1

1 row selected.

SQL>
SQL>
SQL> drop table myTable;

Table dropped.

SQL>
SQL>

 

分享到:
评论

相关推荐

    Java如何读取XML文件 具体实现

    所属区域: " + node1.getAttributes().getNamedItem("type").getNodeValue() + ". "); NodeList nodeDetail = node1.getChildNodes(); for (int j = 0; j &lt; nodeDetail.getLength(); j++) { Node detail = node...

    Web.xml中配置Struts[文].pdf

    `debug`和`detail`参数用于控制Struts框架的日志级别,调试期间可以提高这些值以获取更详细的错误信息。 配置Struts1的`struts-config.xml`文件:此文件是Struts框架的核心配置文件,它定义了Action的映射、Form ...

    jacoco-parser:用Kotlin脚本编写的JaCoCo xml报告解析器

    Module: feature-payment-detail Type: INSTRUCTION, Covered: 3166, Missed: 4665, Total: 7831, Coverage: 40.43 Type: BRANCH, Covered: 185, Missed: 287, Total: 472, Coverage: 39.19 Type: LINE, Cov

    PHP输出XML格式数据的方法总结

    header("Content-type: text/xml"); echo "&lt;?xml version='1.0' encoding='UTF-8'?&gt;"; echo "&lt;users&gt;"; echo "&lt;user&gt;&lt;name&gt;小小菜鸟&lt;/name&gt;&lt;age&gt;24&lt;/age&gt;&lt;sex&gt;男&lt;/sex&gt;&lt;/user&gt;"; echo "&lt;user&gt;&lt;name&gt;艳艳&lt;/name&gt;&lt;age&gt;...

    Chinese Entity Linking Comprehensive

    with an entity node ID of "E" type and "NIL" type are assumed to be co-referenced (clustered), with the same "E" type ID or the same "NIL" ID if they refer to the same entity. Each "E" type ID and...

    web_xml中ActionServlet中的属性

    2. **detail0**: 这是处理配置文件的Digester的调试级别。值范围从0(关闭)到6(最严格)。0表示关闭调试,更高的数字意味着更详细的日志输出。 3. **validating**: 如果设置为`true`,Struts将使用验证XML解析器...

    Java常用代码

    在循环中,我们检查每个节点是否是`&lt;Account&gt;`元素,并获取其属性(如`type`),然后遍历`&lt;Account&gt;`元素的子节点以获取`&lt;code&gt;`、`&lt;pass&gt;`和`&lt;name&gt;`: ```java if ("Account".equals(node1.getNodeName())) { //...

    一个经典Ajax例子的解析.pdf

    Ajax(Asynchronous JavaScript and XML)是一种基于 JavaScript 和 XML 的异步传输技术,在 J2EE 项目开发过程中得到了广泛的应用。Ajax 技术可以让开发者不需要重新加载整个页面,而只需要通过与后台数据库的交互...

    Ibatis调用Oracle存储过程返回自定义类型

    P_ARR_OUT(V_IDX) := ARR_OBJECT(V_WEALTH_DEAL_DETAIL.TRADE_NO, V_WEALTH_DEAL_DETAIL.DEAL_TYPE, V_WEALTH_DEAL_DETAIL.TURNOVER); V_IDX := V_IDX + 1; END LOOP; CLOSE CUR_WEALTH_DEAL_DETAIL; END pro_...

    Java常用代码-PDF版

    Java可以轻松地解析和操作XML文件,通常使用`javax.xml.parsers`包中的类来实现这一功能。以下是一个简单的示例,演示了如何使用DOM解析器读取XML文件并提取特定的数据: ```java import javax.xml.parsers....

    关于anroid的案例测试

    setContentView(R.layout.activity_news_detail); String newsId = getIntent().getStringExtra("news_id"); // 加载详情页面 } } ``` #### 三、总结 本案例涵盖了Android开发中几个重要的方面,包括网络通信...

    测试特定的通信量类型的网络路径的工具

    The XML file config.xml has format &lt;!-- Format by commas" Protocol="TCP|UDP|Both"/&gt; --&gt; * The user can also add port info to config.xml as long as it follows the format. * Service ...

    工资管理系统

    xml version="1.0" encoding="UTF-8"?&gt; &lt;!DOCTYPE hibernate-reverse-engineering SYSTEM ...

    PHP微信支付服务端 (含APP,公众号,H5,扫码支付)

    $result = $WeixinPay-&gt;setWeiXinPay($data['pay_body'], $data['pay_detail'], $data['pay_money'] * 100, $out_trade_no, $red_url, $trade_type, $openid, $product_id); APP加密:$WeChatSDK-&gt;GetAppParameters...

    MyBatis3.2.4完全自学手册

    @Insert("INSERT INTO items (name, price, detail, pic, createtime) VALUES (#{name}, #{price}, #{detail}, #{pic}, #{createtime})") void insertItem(Item item); } ``` **2、删除操作** 同样地,在XML映射...

    Structs的基本配置

    | detail | 设置Digester的debug级别,Digester用于解析XML配置文件 | 0(记录最少日志信息) | ##### 3.2 调试级别设置 - **debug**:控制ActionServlet的调试信息输出,更高的debug级别可以提供更多的调试信息。...

    ext json struts 完整无错源码

    深入研究这些源码,你可以了解到如何配置 Struts 的 XML 配置文件,如何编写 Action 类,以及如何在 EXT 中定义组件和数据源,以及如何利用 EXT Direct 实现前后端通信。 总结来说,"ext json struts 完整无错源码...

    在tomcat环境下搭建solr3.5和mmseg4j搜索引擎

    &lt;Environment name="solr/home" type="java.lang.String" value="D:/solr/apache-solr-3.5.0/example/solr" override="true" /&gt; ``` - 上述配置指定了Solr应用的基本位置以及其运行时的home目录。 4. **启动...

Global site tag (gtag.js) - Google Analytics