/***************************************************
作者:herowang(让你望见影子的墙)
日期:2009.10.18
注: 转载请保留此信息
****************************************************/
一、XML 数据修改语言
insert
Expression1 (
{as first | as last} into | after | before
Expression2
)
Expression1 :标识要插入的一个或多个节点。
Expression2 :目标标识节点。
into :Expression1 标识的节点作为 Expression2 标识的节点的直接后代(子节点)插入。如果 Expression2 中的节点已有一个或多个子节点,则必须使用 as first 或 as last 来指定所需的新节点添加位置。例如,分别在子列表的开头或末尾。插入属性时忽略 as first 和 as last 关键字。
after :Expression1 标识的节点作为 Expression2 标识的节点的同级节点直接插入在其后面。after 关键字不能用于插入属性。
before :Expression1 标识的节点作为 Expression2 标识的节点的同级节点直接插入在其前面。before 关键字不能用于插入属性。
declare @myxml xml
set @myxml='<?xml version="1.0" encoding="gb2312"?>
<root>
<item id="1">
</item>
</root>'
select @myxml
--1、插入item的第一个子元素
set @myxml.modify('insert <course1>sql server2005</course1> into (root/item)[1]')
--2、插入item的第一个子元素,插入到同级子元素前面
set @myxml.modify('insert <sname> 王一诺</sname> as first into (root/item)[1]')
--3、插入item的第一个子元素,插入到同级子元素后面
set @myxml.modify('insert <grade>82</grade> as last into (root/item)[1]')
--4、插入第二个item节点
set @myxml.modify('insert <item id="2" year="2009"></item> into (/root)[1]')
--或者
set @myxml.modify('insert <item id="2" year="2009"></item> after (/root/item)[1]')
--5、向第二个item节点插入多个元素
set @myxml.modify('insert (<sname>王海</sname>,<course1>sql server2005</course1>,<grade>75</grade>) into (/root/item)[2]')
--6、插入属性
set @myxml.modify('insert attribute year{"2009"} into (/root/item)[1]')
select @myxml
--7、插入多个属性
set @myxml.modify('insert (attribute depart{"计算机"},attribute class{"1班"}) into (/root/item)[1]')
--8、插入文本节点
set @myxml.modify('insert text{"成绩表"} as first into (/root)[1]')
--9、插入整个节点
set @myxml.modify('insert <item id="3" year="2009">
<sname>王若天</sname>
<course1>oracle</course1>
<grade>59</grade></item>
into (/root)[1]')
--10、插入处理指令
SET @myxml.modify('insert <?Program ="Instructions.exe" ?> before (/root)[1] ')
select @myxml