sql xml如何在节点外嵌套一层(有我写的语句)

不穿内裤的超人 2018-04-19 01:02:37
先问一个问题,我添加基础节点后,前半段内容会不在了
declare @y xml
set @y='<MSG>
<HEAD>
</HEAD>
<BODY>
<CONTENT></CONTENT>
</BODY>
</MSG>'

select @y

结果

<MSG>
<HEAD />
<BODY>
<CONTENT />
</BODY>
</MSG>

看到<HEAD> 和<content> 这两个头不在了,是因为里面没内容吗?这样的话不成对了,很头疼

第二个问题:
declare @y xml
set @y='<MSG>
<HEAD>
</HEAD>
<BODY>
<CONTENT></CONTENT>
</BODY>
</MSG>'

原本是这样的,我要添加一个节点
变成这样:
<MSG>
<HEAD>
</HEAD>
<BODY>
<ITEM><CONTENT></CONTENT></ITEM>
</BODY>
</MSG>'
就是在<BODY></BODY>中间<CONTENT></CONTENT>外面,我写的语句是:
set @y.modify('insert <ITEM></ITEM> as last into (/MSG/BODY)[1]')

然后结果变成

<MSG>
<HEAD />
<BODY>
<CONTENT />
<ITEM />
</BODY>
</MSG>

并没有套起来,前半段又不在了。。。。。求解
...全文
484 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 3 楼 LittleMan_LC 的回复:
你在<CONTENT>外面加一层<ITEM>相当于改变表结构了,你看一下这个 https://blog.csdn.net/beirut/article/details/8217440
这个我看过了,因为我的结构是先用select 查询出一段xml,然后在上面进行外层的一些整合,刚好需要嵌套到外面,网上没有这样的例子
中国风 2018-04-19
  • 打赏
  • 举报
回复
注意在节点上加空格,转换时保留空格,可以生成能上格式 ------------- 在开发应用中没用,除非你要保留空格
中国风 2018-04-19
  • 打赏
  • 举报
回复
看到<HEAD>  和<content>  这两个头不在了,是因为里面没内容吗?这样的话不成对了,很头疼
--这是标准格式,没内容时结尾有个斜杠
<r></r>
等同于
<r />
XML使用默认的分析行为,即放弃无用的空格 两个问题都是同一原因, 要处理这类情况,只能用字符串赋值,再转XML e.g.
declare @y VARCHAR(max),@x xml
set @y='<MSG>
<HEAD>
</HEAD>
<BODY>
<CONTENT></CONTENT>
</BODY>
</MSG>'
 
SET @x= CONVERT(xml,@y,1)

SELECT @x
/*
<MSG>
<HEAD>
</HEAD>
<BODY>
<CONTENT />
</BODY>
</MSG>*/
LittleMan_LC 2018-04-19
  • 打赏
  • 举报
回复
你在<CONTENT>外面加一层<ITEM>相当于改变表结构了,你看一下这个 https://blog.csdn.net/beirut/article/details/8217440
  • 打赏
  • 举报
回复
引用 1 楼 LittleMan_LC 的回复:
第一、确实是因为标签里面没有内容 第二、插入的标签正常情况下是这样显示的: <MSG> <HEAD> </HEAD> <BODY> <CONTENT></CONTENT> <ITEM></ITEM> </BODY> </MSG> 因为标签里没有内容,所以就只显示尾标签
我想在<CONTENT>外面加一层<ITEM>,难道真的没有办法吗?我网上查了几天资料了
LittleMan_LC 2018-04-19
  • 打赏
  • 举报
回复
第一、确实是因为标签里面没有内容
第二、插入的标签正常情况下是这样显示的:
<MSG>
<HEAD>
</HEAD>
<BODY>
<CONTENT></CONTENT>
<ITEM></ITEM>
</BODY>
</MSG>
因为标签里没有内容,所以就只显示尾标签

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧