MySQL-处理XML数据

x33g5p2x  于2022-07-19 转载在 Mysql  
字(1.7k)|赞(0)|评价(0)|浏览(504)

MySQL 5.1提供了内置的XML文件解析和修改函数ExtractValue()和UpdateXML(),这样就可以直接使用Mysql来操作XML了,再不用其它编程语言来处理,也显示方便很多

注意: 在表里需要设置xml的字段是text格式或者longtext

XPath

XPath教程: https://www.w3school.com.cn/xpath/index.asp

ExtractValue(查询)

语法: ExtractValue(XML_document, XPath_string)

SET @temp_xml = '
<?xml version="1.0" encoding="UTF-8"?>
<root>
    <meta name="description">我在作测试</meta>
    <element name="节点1">
        <child name="子节点1">子节 点1值</child>
    </element>
    <element name="节点2">
        <child name="子节点2">子节点2值</child>
    </element>  
</root>
';

-- 查询xml中指定节点内容
select extractvalue(@temp_xml,'/root/element/child/@name') attr, 
extractvalue(@temp_xml,'/root/element/child') value;

UpdateXML(修改)

语法: UPDATEXML (XML_document, XPath_string, new_value);使用UpdateXML修改完内容后会将最新的XML_document返回

SET @temp_xml = '
<?xml version="1.0" encoding="UTF-8"?>
<root>
    <meta name="description">我在作测试</meta>
    <element name="节点1">
        <child name="子节点1">子节 点1值</child>
    </element>
    <element name="节点2">
        <child name="子节点2">子节点2值</child>
    </element>  
</root>
';

select UpdateXML(@temp_xml,'/root/element/child[@name="子节点1"]','子节 点1值xxx') attr

注意: UpdateXML 不会直接修改原值, 所以需要将修改后的新xml从新赋值进去才行

SET @temp_xml= UpdateXML(@temp_xml,'/root/element/child[@name="子节点1"]','子节 点1值xxx')

如果xml内容存储在表里那么修改方式如下:

update  表 
set  xml_doc=UpdateXML(xml_doc,'/root/element/child[@name="子节点1"]','子节 点1值xxx')  
where  条件

点赞 -收藏-关注-便于以后复习和收到最新内容有其他问题在评论区讨论-或者私信我-收到会在第一时间回复感谢,配合,希望我的努力对你有帮助^_^免责声明:本文部分素材来源于网络,版权归原创者所有,如存在文章/图片/音视频等使用不当的情况,请随时私信联系我。

相关文章

最新文章

更多