SQL Generate XML

wzhq0598 2014-08-04 10:58:43
Hi, 各位大虾:
小弟现在碰到一个SQL生成带有XML格式的问题,大虾有没有解决方案指导一下。谢谢。
小弟使用以下SQL代码生成了一个简单的XML文件,我只需要最开始的命名空间就行,但使用以下语句,在节点“OperationReference”处也会生成带有命名空间的,
如果只生成XML开头的命名空间,
如“<ns0:SyncItemMaster xmlns:ns0="http://www.openapplications.org/oagis/9">”
而下面的节点不生成命名空间,
如:“<ns0:OperationReference xmlns:ns0="http://www.openapplications.org/oagis/9">”
只需要生成<ns0:OperationReference> 就行了
请各位大虾指点。。。。
非常感谢。
declare @xml as xml

DECLARE @tblXMLApplicationAreaTag TABLE (
releaseID VARCHAR(MAX),
systemEnvironmentCode varchar(max),
LogicalID VARCHAR(MAX),
ConfirmationCode varchar(max),
TaskID VARCHAR(MAX),
CreationDateTime varchar(max),
BODID varchar(max)
)

Declare @tblStatus table(
CodeName varchar(max),
CodeValue varchar(max)
)
Insert into @tblStatus(CodeName,CodeValue) Values('Repair Type', 'REP')
Insert into @tblStatus(CodeName,CodeValue) Values('Repair Refurb Code', 'REP')


Declare @tblItem table(
ItemName varchar(max),
ItemValue varchar(max)
)
Insert into @tblItem(ItemName,ItemValue) Values('Country Of Origin', 'CN')
Insert into @tblItem(ItemName,ItemValue) Values('Component Type', '01')

Insert into @tblXMLApplicationAreaTag(releaseID,systemEnvironmentCode,LogicalID,ConfirmationCode,TaskID,CreationDateTime,BODID)
values('1.0','P','941714834','Always','CRP','2014-06-02T13:02:19Z','2b90b4ae-6849-43b3-8d6c-b3e759b15950')

;with xmlnamespaces('http://www.openapplications.org/oagis/9' as "ns0")
select @xml=
(
select
(select
CodeName as "ns0:Code/@Name",
CodeValue as "ns0:Code"
from @tblStatus for xml path('ns0:Status'),type,root('ns0:OperationReference')) as "ns0:DataArea/ns0:ItemMaster/ns0:ItemLocation/ns0:DocumentReference"

from @tblXMLApplicationAreaTag for xml path('ns0:SyncItemMaster')
)

select @xml

...全文
122 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
wzhq0598 2014-08-11
  • 打赏
  • 举报
回复
使用以上语句得出的效果是: <ns0:SyncItemMaster xmlns:ns0="http://www.openapplications.org/oagis/9"> <ns0:DataArea> <ns0:ItemMaster> <ns0:ItemLocation> <ns0:DocumentReference> <ns0:OperationReference xmlns:ns0="http://www.openapplications.org/oagis/9"> <ns0:Status> <ns0:Code Name="Repair Type">REP</ns0:Code> </ns0:Status> <ns0:Status> <ns0:Code Name="Repair Refurb Code">REP</ns0:Code> </ns0:Status> </ns0:OperationReference> </ns0:DocumentReference> </ns0:ItemLocation> </ns0:ItemMaster> </ns0:DataArea> </ns0:SyncItemMaster> 但我想要的效果是,即在节点 ns0:OperationReference 处不要生成命名空间,注,除了替换字符串的方法是否还有其它一步到位的方法: <ns0:SyncItemMaster xmlns:ns0="http://www.openapplications.org/oagis/9"> <ns0:DataArea> <ns0:ItemMaster> <ns0:ItemLocation> <ns0:DocumentReference> <ns0:OperationReference> <ns0:Status> <ns0:Code Name="Repair Type">REP</ns0:Code> </ns0:Status> <ns0:Status> <ns0:Code Name="Repair Refurb Code">REP</ns0:Code> </ns0:Status> </ns0:OperationReference> </ns0:DocumentReference> </ns0:ItemLocation> </ns0:ItemMaster> </ns0:DataArea> </ns0:SyncItemMaster>
拥抱开源 2014-08-05
  • 打赏
  • 举报
回复
你需要完成什么效果?

22,296

社区成员

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

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