SQL查出来的数据格式为
BldNo RoomNo
A001 Rm001
A001 Rm002
A002 Rm003
A002 Rm004
希望用SQL Server的for xml path功能直接转换成如下格式(按BldId分组),不知道能不能实现?要怎么搞?:
<myxml>
<tjrooms>
<build bldid="A001" checked="true">
<roomid>Rm001</roomid>
<roomid>Rm002</roomid>
</build>
<build bldid="A002" checked="true">
<roomid>Rm003</roomid>
<roomid>Rm004</roomid>
</build>
<myxml/>
<tjrooms/>
看上去程序实现更靠谱些
可以直接用程序来直接拼成一个xml文件
或者用gridview另存为xml
你从数据库里面搜索出来是一个DataTable
直接调用DaTaTable的WriteXml方法 可以直接得到一个XML 不过要形成你显示的这种属性还需要在代码里面处理一下
直接在查询分析器中执行SQL,然后在输出结果集中全选,右键,应该是可以导出XML的吧。
你的结果里面开头,然后这个语法结构都不对。首先开闭的顺序不对, 其次< tjrooms /> < myxml />的闭合斜杠应该是在tag名字前。
不知道你为什么要两层,现在实现了一层。查询语句和结果如下:
SELECT BldNo AS '@bldid'
, 'true' AS '@checked'
,(
SELECT RoomNo AS 'roomid'
FROM tjrooms
WHERE (BldNo = T1.BldNo)
FOR XML PATH (''), TYPE
)
FROM tjrooms T1
GROUP BY BldNo
FOR XML PATH ('build'), root('tjrooms')
<tjrooms>
<build bldid="A001" checked="true">
<roomid>Rm001</roomid>
<roomid>Rm002</roomid>
</build>
<build bldid="A002" checked="true">
<roomid>Rm003</roomid>
<roomid>Rm004</roomid>
</build>
</tjrooms>