22,207
社区成员
发帖
与我相关
我的任务
分享
declare @y xml
set @y='<MSG>
<HEAD>
</HEAD>
<BODY>
<CONTENT></CONTENT>
</BODY>
</MSG>'
select @y
<MSG>
<HEAD />
<BODY>
<CONTENT />
</BODY>
</MSG>
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>外面,我写的语句是:
<MSG>
<HEAD />
<BODY>
<CONTENT />
<ITEM />
</BODY>
</MSG>
看到<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>*/