0
我想删除正在存储在数据库的类型化xml列中的菜单xml中的一些节点。
片段从菜单XML -SQL Server - xml类型列 - XML DML
<menu xmlns="http://xxx" ..>
<menuItem name="Menu1">
<menuItem name="SubMenu1">
<role>role1</role>
<url target="webPage1.aspx" />
</menuItem>
</menuItem>
我试图删除<role>
menuItem = "SubMenu1"
下使用以下XML DML -
UPDATE [dbo].[MenuTest]
SET xmlMenu.modify('
declare namespace ns="http://xxx";
delete(/ns:menu/ns:menuItem[@name="Menu1"]/ns:menuItem[@name="SubMenu1"]/ns:role[1])
')
但收到此错误:
Msg 6965, Level 16, State 1, Line 1
XML Validation: Invalid content. Expected element(s):http://xxx:role where element 'http://xxx:url' was specified.
可以请贵我在这里失去了什么。
谢谢!
好知道:-)也可以请指导我怎么能删除文本“role1上”节点,所以如果我有多个 节点,我想只有那些不必删除特定的文本值。 –
iniki
@iniki - 用'ns:role [']替换'ns:role [1]'。 =“role1”]'它将删除所有具有值'role1'的''节点。 –
感谢您的回复,但我收到此错误 - 无法隐式地将'fn:data()'应用于复杂内容元素,在推断类型元素中找到类型'xs:anyType'(ns {xxx}:role, XS:anyType的)”。 – iniki