`
guolang2116
  • 浏览: 73058 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

sql for xml

    博客分类:
  • sql
阅读更多

for xml子句有四种最基本的模式,如上图所示:

1、auto模式:返回数据表为起表名的元素,每一列的值返回为属性;
2、raw模式:返回数据行为<row>元素,每一列的值作为<row>元素的属性;
3、path模式:通过简单的xpath语法来答应用户自定义嵌套的xml结构、元素、属性值
4、explicit模式:通过select语法定义输出xml的结构

 

具体实例如下:

1、auto模式

(1). sql语句:

   1:  select employeeid,firstname,lastname from employees for xml auto, xmlschema

(2). 所生成的xml文件:

返回xml文件的xml schema

<xsd:schema targetnamespace="urn:schemas-microsoft-com:sql:sqlrowset1" xmlns:schema="urn:schemas-microsoft-com:sql:sqlrowset1" xmlns:xsd="http://www.w3.org/2001/xmlschema" xmlns:sqltypes="http://schemas.microsoft.com/sqlserver/2004/sqltypes" elementformdefault="qualified">
  
<xsd:import namespace="http://schemas.microsoft.com/sqlserver/2004/sqltypes" schemalocation="http://schemas.microsoft.com/sqlserver/2004/sqltypes/sqltypes.xsd" />
  
<xsd:element name="employees">
    
<xsd:complextype>
      
<xsd:attribute name="employeeid" type="sqltypes:int" use="required" />
      
<xsd:attribute name="firstname" use="required">
        
<xsd:simpletype>
          
<xsd:restriction base="sqltypes:nvarchar" sqltypes:localeid="1033" sqltypes:sqlcompareoptions="ignorecase ignorekanatype ignorewidth" sqltypes:sqlsortid="52">
            
<xsd:maxlength value="10" />
          
</xsd:restriction>
        
</xsd:simpletype>
      
</xsd:attribute>
      
<xsd:attribute name="lastname" use="required">
        
<xsd:simpletype>
          
<xsd:restriction base="sqltypes:nvarchar" sqltypes:localeid="1033" sqltypes:sqlcompareoptions="ignorecase ignorekanatype ignorewidth" sqltypes:sqlsortid="52">
            
<xsd:maxlength value="20" />
          
</xsd:restriction>
        
</xsd:simpletype>
      
</xsd:attribute>
    
</xsd:complextype>
  
</xsd:element>
</xsd:schema>
<employees xmlns="urn:schemas-microsoft-com:sql:sqlrowset1" employeeid="1" firstname="nancy" lastname="davolio" />
<employees xmlns="urn:schemas-microsoft-com:sql:sqlrowset1" employeeid="2" firstname="andrew" lastname="fuller" />
<employees xmlns="urn:schemas-microsoft-com:sql:sqlrowset1" employeeid="3" firstname="janet" lastname="leverling" />
<employees xmlns="urn:schemas-microsoft-com:sql:sqlrowset1" employeeid="4" firstname="margaret" lastname="peacock" />
<employees xmlns="urn:schemas-microsoft-com:sql:sqlrowset1" employeeid="5" firstname="steven" lastname="buchanan" />
<employees xmlns="urn:schemas-microsoft-com:sql:sqlrowset1" employeeid="6" firstname="michael" lastname="suyama" />
<employees xmlns="urn:schemas-microsoft-com:sql:sqlrowset1" employeeid="7" firstname="robert" lastname="king" />
<employees xmlns="urn:schemas-microsoft-com:sql:sqlrowset1" employeeid="8" firstname="laura" lastname="callahan" />
<employees xmlns="urn:schemas-microsoft-com:sql:sqlrowset1" employeeid="9" firstname="anne" lastname="dodsworth" />

2、raw模式

(1). sql语句:
   1:  ----将元素命名为自定义的名称employee
   2:  select employeeid,firstname,lastname from employees for xml raw ('employee')
 
(2). 所生成的xml文件:
   1:  <employee employeeid="1" firstname="nancy" lastname="davolio" />
   2:  <employee employeeid="2" firstname="andrew" lastname="fuller" />
   3:  <employee employeeid="3" firstname="janet" lastname="leverling" />
   4:  <employee employeeid="4" firstname="margaret" lastname="peacock" />
   5:  <employee employeeid="5" firstname="steven" lastname="buchanan" />
   6:  <employee employeeid="6" firstname="michael" lastname="suyama" />
   7:  <employee employeeid="7" firstname="robert" lastname="king" />
   8:  <employee employeeid="8" firstname="laura" lastname="callahan" />
   9:  <employee employeeid="9" firstname="anne" lastname="dodsworth" />

3、path模式:

(1). sql语句:

select employeeid "@id",firstname  "name/firstname",lastname "name/lastname"
from employees for xml path ('employee')

(2). 所生成的xml文件

<employee id="1">   <name>     <firstname>nancy</firstname>     <lastname>davolio</lastname>   </name> </employee> <employee id="2">   <name>     <firstname>andrew</firstname>     <lastname>fuller</lastname>   </name> </employee> <employee id="3">   <name>     <firstname>janet</firstname>     <lastname>leverling</lastname>   </name> </employee> <employee id="4">   <name>     <firstname>margaret</firstname>     <lastname>peacock</lastname>   </name> </employee> <employee id="5">   <name>     <firstname>steven</firstname>     <lastname>buchanan</lastname>   </name> </employee> <employee id="6">   <name>     <firstname>michael</firstname>     <lastname>suyama</lastname>   </name> </employee> <employee id="7">   <name>     <firstname>robert</firstname>     <lastname>king</lastname>   </name> </employee> <employee id="8">   <name>     <firstname>laura</firstname>     <lastname>callahan</lastname>   </name> </employee>

4、explicit模式

问题:加入要生成如下的xml文档该如何操作?

<employee empid="1">
<firstname>nancy</firstname>
<lastname>davolio</lastname>
</employee>
 
explicit模式解决这个问题的应用分为两个主要步骤:
1.定义要输出的xml文档结构;
2.传入实际的数据值;
(1). sql语句:
 
--定义输出xml文档的数据结构
select  1 as tag,
        null as parent,
        employeeid as [employee!1!empid],
        firstname as [employee!1!firstname!element],
        lastname as [employee!1!lastname!element]
from    employees
 
union all
--传入实际的数据
select  1,
        null,
        employeeid,
        firstname,
        lastname
from    employees
order by [employee!1!empid],
        [employee!1!firstname!element],
        [employee!1!lastname!element]
for     xml explicit

语句含义的解释:

先看看定义xml结构的语句输出结果:

tag栏用来指定生成元素的嵌套水平;1表示嵌套水平为

parent栏用来指定当前tag的父级层次;null值表示该元素为顶级元素;

employeeid as [employee!1!empid],

说明:当前元素或属性的父级元素的名称!元素的标签号!元素或属性的名称
firstname as [employee!1!firstname!element],

说明:当前元素或属性的父级元素的名称!元素的标签号!元素或属性的名称!指定值作为元素输出

5、为输出的xml文档添加根元素(root element)

(1). sql语句:

select employeeid,firstname,lastname from employees for xml auto, root('myroot')

(2). 所生成的xml文件

<myroot>   <employees employeeid="1" firstname="nancy" lastname="davolio" />   <employees employeeid="2" firstname="andrew" lastname="fuller" />   <employees employeeid="3" firstname="janet" lastname="leverling" />   <employees employeeid="4" firstname="margaret" lastname="peacock" />   <employees employeeid="5" firstname="steven" lastname="buchanan" />   <employees employeeid="6" firstname="michael" lastname="suyama" />   <employees employeeid="7" firstname="robert" lastname="king" />   <employees employeeid="8" firstname="laura" lastname="callahan" />   <employees employeeid="9" firstname="anne" lastname="dodsworth" /> </myroot>
分享到:
评论

相关推荐

    SQL Server FOR XML PATH 语句的应用

    ### SQL Server FOR XML PATH 语句的应用 #### 概述 在数据库操作中,将查询结果转换为XML格式的需求十分常见。SQL Server 提供了多种方法来生成XML数据,其中`FOR XML PATH`是最常用的方法之一。通过使用`FOR XML...

    sqlserver for xml

    ### SQL Server 中的 XML 支持详解 #### 引言 自 SQL Server 2005 版本开始,Microsoft 引入了对 XML 数据类型的支持。这一特性极大地增强了 SQL Server 处理非结构化数据的能力,使得开发人员能够更灵活地存储与...

    走进 SQL/XML

    可以使用XPath与`XMLType`数据结合进行查询,这些功能通过PL/SQL、Java API(如JDBC)以及Oracle Data Provider for .Net等接口提供。 在存储XML数据时,Oracle提供了两种方式:结构化存储和非结构化存储。非结构化...

    SQLXML.rar_SQLXML_sql xml_xml 数据库

    描述中提到,“让数据库输出XML”,这指的是SQL Server可以通过查询语句生成XML格式的结果集,这得益于SQL Server的FOR XML子句。开发人员可以使用T-SQL查询配合FOR XML来构造XML文档,这极大地增强了数据库与应用...

    FOR XML子句在SQL Server中的用法比较.pdf

    随着XML(可扩展标记语言)在数据交换中的广泛应用,SQL Server引入了FOR XML子句,以便能够将SQL查询结果转换成XML格式。本篇文章主要介绍了SQL Server中FOR XML子句的四种不同用法:AUTO、RAW、EXPLICIT和PATH,...

    SQL 数据表转化为XML 文件

    首先,SQL Server提供了`FOR XML`子句,允许我们直接在SQL查询中生成XML结果。它的基本语法是: ```sql SELECT column1, column2, ... FROM table_name FOR XML AUTO, ELEMENTS, ROOT('rootElementName'); ``` 这...

    sql 操作xml

    SQL Server提供了一种强大的工具,即FOR XML子句,用于将查询结果转换为XML格式。这个功能使得数据库中的数据能够方便地与其他XML兼容的应用程序进行交互。 FOR XML子句有四种基本模式: 1. AUTO模式: AUTO模式...

    sql_xml.rar_.sql文件数据表_sql to xml_xml 数据库

    例如,在SQL Server中,我们可以使用`FOR XML`子句,将查询结果集转化为XML格式。这是一个简单的例子: ```sql SELECT * FROM Customers FOR XML AUTO; ``` 这段代码会将`Customers`表中的所有数据以XML格式返回。...

    sql 转换成xml语言

    例如,SQL Server有FOR XML子句,MySQL有CONVERT函数,Oracle有XMLTYPE函数等。 3. 自定义转换:如果数据库不直接支持XML转换,我们也可以通过编程语言(如Python、Java、C#等)连接到数据库,执行SQL查询,然后...

    SQL Server XML基础指南.pdf

    - **在SSAS中使用XMLA进行跟踪管理**:XMLA(XML for Analysis)是用于与多维数据集进行交互的标准XML协议,通过XMLA命令,可以实现对SSAS(SQL Server Analysis Services)的跟踪管理和监控。 #### SQL Server ...

    Pro SQL Server 2008 XML 数据库

    例如,`FOR XML`子句用于将SQL查询结果转换为XML格式,而`OPENXML`函数则用于读取XML文档并将其转换为关系数据。此外,还有`XQuery`表达式,这是一种强大的查询语言,可以直接在XML数据上执行复杂的查询操作。通过...

    sql 数据转化为XML 格式的数据

    首先,我们可以使用SQL Server自带的FOR XML子句。这个功能允许我们直接在SQL查询中生成XML结果。例如,如果你有一个名为`Orders`的表,你可以写一个SELECT语句,加上FOR XML AUTO或FOR XML RAW,这会返回一个包含...

    SQLXML.rar_SQLXML

    3. **JAXB(Java Architecture for XML Binding)**: 在Java中处理XML时,JAXB是一个常用的框架,它可以将XML文档自动转换为Java对象,反之亦然。这在将SQLXML数据导入Java应用程序或从应用程序中导出时非常有用。 ...

    sql.xml开发源代码

    解析sql.xml文件的过程通常涉及到XML解析器,如DOM(Document Object Model)或SAX(Simple API for XML)。解析器会将XML文档转换为内存中的数据结构,然后应用程序可以遍历这些结构来获取SQL查询。执行SQL查询时,...

    SQl 2005 For XMl 简单查询

    SQl 2005 For XMl 简单查询

    sql 输出xml

    首先,我们来看下`FOR XML PATH`函数的使用,这是在SQL Server中用来将查询结果输出为XML格式的一个重要工具。通过指定`PATH`子句,你可以控制输出的XML结构。如果省略`PATH`子句,那么输出的XML将是一个单节点,...

    第4章 SQL Server XML的功能

    4. **XML操作语句和函数**:例如`FOR XML`和`OPENXML`函数,使得在SQL语句中操作XML变得更加便捷。 ### 4.1.2 XML数据类型的使用 - **创建XML类型列**:使用`CREATE TABLE`语句中的`XML`关键字可以创建XML类型列,...

    SQL Server 2000 XML应用程序开发指南

    这包括了XML列类型,使得XML文档可以直接存储在数据库中,以及T-SQL中的XML函数,如SELECT语句的FOR XML子句,用于将查询结果转换为XML格式。 二、XML数据类型 SQL Server 2000引入了新的XML数据类型,允许直接在表...

    java操作xml和sql server 2008必备包(crimson jdom sqljdbc sqljdbc4)

    Crimson提供了DOM(文档对象模型)和SAX(简单API for XML)接口,开发者可以根据项目需求选择合适的API。DOM允许整个XML文档加载到内存中进行操作,适合小型XML文件;而SAX则是一种事件驱动的解析方式,适用于处理...

Global site tag (gtag.js) - Google Analytics