首批通过分布式安全可靠测评,为关键业务系统打造
DELETEXML
更新时间:2026-04-05 20:22:11
描述
该函数用于删除 XPath 表达式在 XML 中匹配的一个或多个节点。
语法
DELETEXML( XMLType_instance, XPath_string [, namespace_string ])
参数解释
| 字段 | 说明 |
|---|---|
| XMLType_instance | 指定一个 XMLType 实例,表示目标 XML 文档。 |
| XPath_string | 指定一个 XPath 表达式,指示要删除的一个或多个节点。可以使用绝对路径(以斜杠开头)或相对路径(省略初始斜杠)。如果省略初始斜杠,则相对路径的上下文默认为根节点。XPath_string 指定的节点的所有子节点也将被删除。 |
| namespace_string | 可选项,用于为 XPath_string 提供命名空间信息。 |
返回类型
返回 XMLType 数据类型。
示例
使用
DELETEXML函数从目标 XML 中删除匹配的节点。其中,目标 XML 是<bookstore>节点及其子节点;指定 XPath 表达式是/bookstore/author,它指示要删除<bookstore>节点下的<author>节点;查询的结果使用AS关键字重命名为result;最后,从dual表中检索结果。SELECT DELETEXML( XMLtype('<bookstore> <book att="old"></book> <author>carrot</author> </bookstore>'), '/bookstore/author' ) AS result FROM dual;返回结果如下:
+-----------------------------------------------+ | RESULT | +-----------------------------------------------+ | <bookstore> <book att="old"/> </bookstore> | +-----------------------------------------------+ 1 row in set删除父节点下所有子节点后,父节点 namespace 仍然保留。
SELECT DELETEXML( xmltype( '<a xmlns="ns1" xmlns:f="ns2"> <f:b b1="b1" b2="b2">bbb1</f:b> <b b1="b1" b2="b2">bbb2</b> </a>' ), '/a/*', 'xmlns="ns1"' ) FROM dual;返回结果如下:
+----------------------------------------------------------------------------------------------------------------------------------+ | DELETEXML(XMLTYPE('<AXMLNS="NS1"XMLNS:F="NS2"><F:BB1="B1"B2="B2">BBB1</F:B><BB1="B1"B2="B2">BBB2</B></A>'),'/A/*','XMLNS="NS1"') | +----------------------------------------------------------------------------------------------------------------------------------+ | <a xmlns="ns1" xmlns:f="ns2"/> | +----------------------------------------------------------------------------------------------------------------------------------+ 1 row in set