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

1,最简单的用法:

select * from users for xml auto

得到结果如下:

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

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

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

3,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数据:

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

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

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

结果为:

<info> <users /> <users /> <users /> <users /> <users /> <users /> <users /> <users /> <users /> <users /> <users /> <users /> </info>

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-03-04
  • 2021-11-17
  • 2022-01-03
猜你喜欢
  • 2022-12-23
  • 2021-08-11
  • 2021-07-02
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-03-06
相关资源
相似解决方案