怎么给xml节点添加属性

bryant_wyf 2010-10-11 11:42:28
小弟请教各位大虾
有一个xml: <root><row><item1>1</item1><item2>2</item2></row><row><item1>3</item1><item2>4</item2></row></root>。
row节点的个数不定,我想给所有item1节点添加一个属性align="right"。
请问怎么实现。

SET @myDoc.modify('insert attribute align {"right"} into (/root/row/item1)[1]')
小弟只知道这种方法加属性,可是这种方法永远都只能给确定的某个节点加。实现不了我要的结果。
...全文
203 点赞 收藏 7
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
bryant_wyf 2010-10-14
呵呵,自己想出个方法来。

declare @xml xml
set @xml = '<root><row><item1>1</item1><item2>2</item2></row><row><item1>3</item1><item2>4</item2></row></root>'
declare @temp xml = ''
set @temp =
(
select
'right' 'item1/@aligh'
, isnull(A.item1,'') as item1
, isnull(A.item2,'') as item2
from
(
select
A.value('(item1/text())[1]', 'VARCHAR(MAX)') AS item1
, A.value('(item2/text())[1]', 'VARCHAR(MAX)') AS item2
FROM @xml.nodes('/root/row') AS R(A)
) A
For Xml Path('row')
)
declare @xml2 xml = '<root />'
SET @xml2.modify( 'insert sql:variable("@temp") into (/root)[1]')
select @xml2


这个@xml2就是我想要的结果。
回复
SQLCenter 2010-10-11
好像是无解
回复
liangCK 2010-10-11
xquery赋值给一个新的变量.
回复
bryant_wyf 2010-10-11
补充一点。我是想在存储过程中实现的。
回复
missfeng 2010-10-11

NodeList nodeList = doc.getElementsByTagName("items");

for (int i = 0; i < nodeList.getLength(); i++) {
Element e= (Element) nodeList.item(i);
NamedNodeMap attributes = e.getAttributes();//获取属性
for (int j = 0; j < attributes.getLength(); j++) {
Attr attr = (Attr) attributes.item(j);
System.out.println(attr.getValue());
属性值获取出来再做修改试一下
}
回复
bryant_wyf 2010-10-11
[Quote=引用 2 楼 liangck 的回复:]

xquery赋值给一个新的变量.
[/Quote]

能详细说明一下吗?谢谢。
回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2010-10-11 11:42
社区公告
暂无公告