我有一个具有以下格式的BaseX数据库
<root>
<node1>
<value1>abctetabc</value1>
<value2>...</value2>
</node1>
<node1>
<value1>abctatabc</value1>
<value2>...</value2>
</node1>
</root>
我想问一下如何删除其值包含tet的节点。 我要使用正则表达式吗?
正常删除就像这样执行
XQUERY delete root/node1[value1='abctatabc']
如何搜索子字符串?
答案 0 :(得分:1)
如果要删除数据库中的节点,可以使用delete node root/node1[value1='abctatabc']
(请参阅BaseX文档中的XQuery Update)。如果要在不更改原始文档的情况下删除它,可以使用update
关键字:
document {
<root>
<node1>
<value1>abctetabc</value1>
<value2>...</value2>
</node1>
<node1>
<value1>abctatabc</value1>
<value2>...</value2>
</node1>
</root>
} update {
delete node root/node1[value1 = 'abctatabc']
}
当然你也可以查找子串(通过fn:contains
)或使用正则表达式(通过fn:matches
):
delete node root/node1[matches(value1, 'abc')]