SQL Server返回XML格式数据

摘要:
让我们举个例子。假设用户表只包含两个字段:ID和Pwd。

直接看例子吧,假设一张users表,里面只有id和Pwd两个字段。

1,最简单的用法:

select * from users for xml auto

得到结果如下:

<users   pwd="walker" />
<users   pwd="1C3A0B25C3D1C909E2BCB9FE44C2F904" />
<users   pwd="1C3A0B25C3D1C909E2BCB9FE44C2F904" />
<users   pwd="1C3A0B25C3D1C909E2BCB9FE44C2F904" />
<users   pwd="1C3A0B25C3D1C909E2BCB9FE44C2F904" />
<users   pwd="1C3A0B25C3D1C909E2BCB9FE44C2F904" />
<users   pwd="insert time:2010/09/06 11:50:40" />
<users   pwd="insert time:2010/09/06 11:50:40" />
<users   pwd="insert time:2010/09/06 11:50:53" />
<users   pwd="insert time:2010/09/06 11:50:53" />
<users   pwd="insert time:2010/09/06 11:51:01" />
<users   pwd="insert time:2010/09/06 11:51:01" />

2,每一个数据行生成一个节点的方法(注,此时每个节点的名字默认为row,可用自定义的名字代替,此处为设为users)

select * from users for xml raw ('users')--如果不加(‘users'),则节点名为row

因为我把节点名设成了users,则此时生成的xml数据和上例一模一样。否则也只有节点名不一样。

3,path用法:

select id "user/id", pwd "user/pwd" from users for xml path

结果:1,2都是把列作为属性,path用法则把列变成了节点,并且我顺便演示了怎么去自定义层级关系

<row>
  <user>
    <id>walker</id>
    <pwd>walker</pwd>
  </user>
</row>
<row>
  <user>
    <id>walker</id>
    <pwd>1C3A0B25C3D1C909E2BCB9FE44C2F904</pwd>
  </user>
</row>
<row>

4,EXPLICIT 用法,暂时没有研究。。。

差不多了,可是正好我用的是linq to xml,用到如下代码来读取xml数据:

            string sql = "select * from users for xml auto";//结果将以xml格式呈现
            SqlDatabase db = DatabaseFactory.CreateDatabase() as SqlDatabase;
            IEnumerable<string> result = null;
            DbCommand cmd = db.GetSqlStringCommand(sql);

            using (var reader = db.ExecuteXmlReader(cmd))
            {
                if (reader.IsStartElement())
                {
                    var root = (XElement)XNode.ReadFrom(reader);//linq to xml用法
                    result = root.Elements("users").Attributes("id").Select(x => x.Value);
                }
                return result;
            }

此时用root.Elements(“users”).attributes(“id”)…取不到值,纠结之下用xml文档测试,发现能正常取值,才想到,可能是没有根节点的缘故(C#理解成多个根节点,因为每个节点名都一样),

经测试,确实如此,那么如何更改查询语句呢? 上述所有的查询语句后面加一个root(‘yourname’)即可,如:

select * from users for xml auto , root ('info')

结果为:

<info>
  <users   pwd="walker" />
  <users   pwd="1C3A0B25C3D1C909E2BCB9FE44C2F904" />
  <users   pwd="1C3A0B25C3D1C909E2BCB9FE44C2F904" />
  <users   pwd="1C3A0B25C3D1C909E2BCB9FE44C2F904" />
  <users   pwd="1C3A0B25C3D1C909E2BCB9FE44C2F904" />
  <users   pwd="1C3A0B25C3D1C909E2BCB9FE44C2F904" />
  <users   pwd="insert time:2010/09/06 11:50:40" />
  <users   pwd="insert time:2010/09/06 11:50:40" />
  <users   pwd="insert time:2010/09/06 11:50:53" />
  <users   pwd="insert time:2010/09/06 11:50:53" />
  <users   pwd="insert time:2010/09/06 11:51:01" />
  <users   pwd="insert time:2010/09/06 11:51:01" />
</info>

免责声明:文章转载自《SQL Server返回XML格式数据》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇android 6.0+ 动态权限 拒绝不再询问后跳转设置应用详情页面android相对布局中控件的常用属性下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

(转)SQL对Xml字段的操作

T-Sql操作Xml数据 一、前言 SQL Server 2005 引入了一种称为 XML 的本机数据类型。用户可以创建这样的表,它在关系列之外还有一个或多个 XML 类型的列;此外,还允许带有变量和参数。为了更好地支持 XML 模型特征(例如文档顺序和递归结构),XML 值以内部格式存储为大型二进制对象 (BLOB)。 用户将一个XML数据存入数据库的时...

xml与Excel转换

使用Python将如下xml格式转换为Excel格式: xml转为xls格式文件: xml格式如下: <?xml version="1.0" encoding="UTF-8"?> <photos> <photo src="http://t.zoukankan.com/assets/images/00...

Apache Commons 工具类介绍及简单使用

转自:http://www.cnblogs.com/younggun/p/3247261.html Apache Commons包含了很多开源的工具,用于解决平时编程经常会遇到的问题,减少重复劳动。下面是我这几年做开发过程中自己用过的工具类做简单介绍。 组件 功能介绍 BeanUtils 提供了对于JavaBean进行各种操作,克隆对象,属性等等....

简单对象访问协议(SOAP)初级指南[转]

这篇文章带你全面回顾对象远程进程调用(ORPC)技术的历程,以帮助你理解SOAP技术的基础,以及它克服存在技术(如CORBA和DCOM)的许多缺陷的方法。随后讲述详细的SOAP编码规则,并把焦点放在SOAP是怎样映射到存在的ORPC概念上的。   引言:   当我在1984年开始把计算作为我的职业的时候,大多数程序员并不关心网络协议。但是在九十年代网络变得...

WebService与CXF

一:Webservice  1:WebService是干什么的?有什么用? 一言以蔽之:WebService是一种跨编程语言和跨操作系统平台的远程调用规范。 比如,amazon,天气预报系统,淘宝网,校内网,百度等把自己的系统服务以webservice服务的形式暴露出来,让第三方网站和程序可以调用这些服务功能,这样扩展了自己系统的市场占有率 从表面上看,W...

xStream完美转换XML、JSON(转)

xStream框架 xStream可以轻易的将Java对象和xml文档相互转换,而且可以修改某个特定的属性和节点名称,而且也支持json的转换; 前面有介绍过json-lib这个框架,在线博文:http://www.cnblogs.com/hoojo/archive/2011/04/21/2023805.html 以及Jackson这个框架,在线博文:ht...