网络编程
位置:首页>> 网络编程>> 数据库>> 如何在MySQL数据库中使用XML数据(2)

如何在MySQL数据库中使用XML数据(2)

 来源:asp之家 发布时间:2009-12-29 10:48:00 

标签:mysql,数据库,xml

使用Load_File()函数导入XML数据

MySQL 5.1.5包括了两个新的函数:ExtractValue()和UpdateXML()。

ExtractValue():使用XPath符号从XML字符串提取值。

UpdateXML():返回一个替代的XML片段。

MySQL中导入XML数据最常用的方法是使用LOAD_FILE()函数打开一个完整的XML文档,将其存储在一个变量中,然后将变量插入到一个表列中。这里还是以client_citizenship表为例进行说明,但这一次它只包括两个字段:一个自增长的ID和一个xml_data列(就是由它存储XML文档),TEXT数据类型非常适合用在这个列上,因为它可以容纳非常长的字符串。


CREATE TEMPORARY TABLE client_citizenship (
    id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    xml_data TEXT NOT NULL
); 
SET @xml = LOAD_FILE("c:\client_citizenships.xml"); 
INSERT INTO client_citizenship VALUES (NULL, @xml);

现在我们可以使用ExtractValue()函数从xml_data字段检索变量了,ExtractValue()函数有两个参数,第一个是被检查的XML片段,第二个是XPath表达式。XPath是一门专门设计用于查询XML文档中节点信息的语言,在www.w3.org网站有完整的XPath介绍。XPath参数在元素选择器中可以包括冒号“:”,以支持命名空间。检索数据包括两步,首先从client_citizenship表获得XML,然后将其放进变量。


SELECT xml_data FROM client_citizenship LIMIT 1 INTO @xml;

现在我们使用ExtractValue()函数,@xml作为第一个参数,XPath字符串作为第二个参数进行查询: 



SELECT ExtractValue(@xml, '//row[2]/field[1]/@name'),

  ExtractValue(@xml, '//row[2]/field[1]');

在前一个ExtractValue()调用中,XPath表达式检索第二个中的第一个元素的name属性的值,如果你再次调用,name属性会包含列头;第二个XPath表达式提取文本节点,当然包括字段的值了。

...
</row>
<row> (row[2])
    <field name="client_id">2</field> (field[1])
    <field name="date_of_birth">1944-01-15</field>
...

下面显示的是上面的查询格式化输出结果:
+----------------------------------------------+----------------------------------------+
|ExtractValue(@xml, "//row[2]/field[1]/@name") |ExtractValue(@xml, '//row[2]/field[1]') |
+----------------------------------------------+----------------------------------------+
|client_id                                     |2                                       |
+----------------------------------------------+----------------------------------------+

在下一篇文章中,我们将看到一种更好的格式化结果集的方法,以便列标题可以更好地展示。此外,我将会扩展上面的例子,使用存储过程检索整个XML文档,最后还将看到UpdateXML()函数的使用介绍。

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com