在SQL2005里直接读取XML并解析其内容
SQL2005里一项令人心动的内容就是支持XML类型了,而且今天刚刚知道,原来本身还支持在SQL2005的语句里解析XML.
不多说,直接贴例子代码:
访问一个结点:
SELECT TOP (10)
dataxml.query('declare namespace AWMI="http://webservices.test.com/ABCDCommerceService/2005-10-05"
; data(/AWMI:ItemLookupResponse/AWMI:OperationRequest/AWMI:RequestId)')
AS Expr1
FROM asin
访问一个结点的属性:
SELECT TOP (10)
dataxml.query('declare namespace AWMI="http://webservices.test.com/ABCDCommerceService/2005-10-05"
; data(/AWMI:ItemLookupResponse/AWMI:OperationRequest/AWMI:RequestId/@approved)')
AS Expr1
FROM asin
dataxml是我表中的字段名称,也就是类型为XML的字段.
先声明了一个命名空间,然后直接按照结点访问,就这么简单.至于属性就加个@就可以了
我们还可以给这个XML设置验证格式,当然,可以用XSD验证.
在写下面的语句:
CREATE XML SCHEMA COLLECTION [dbo].[requestSchemaCollection]
AS N'这里是XSD的内容'
注意编码在SQL里默认是UTF16的,你可以把编码那句删除.
创建成功以后就可以在programmablitity---types---XML schema collections里看到你创建的验证格式了.去修改你的表,把格式添加进table的XML列里.
在你用Visual Studio调用在SQL语句里直接解析XML的过程时,还可能出现类似错误:
UPDATE failed because the following SET options have incorrect settings: 'ARITHABORT'. Verify that SET options are correct for use with indexed views and/or indexes on computed columns and/or query notifications and/or xml data type methods.
如果有这个错误,你需要在语句里添加Set ARITHABORT ON来解决此问题.这些是最近在操作SQL2005时遇到的.如果你也在用,试试看吧
看看这个,也很有用
http://www.microsoft.com/china/msdn/library/data/sqlserver/XMLSupportinMicrosoftSQLServer2005.mspx
不多说,直接贴例子代码:
访问一个结点:
SELECT TOP (10)
dataxml.query('declare namespace AWMI="http://webservices.test.com/ABCDCommerceService/2005-10-05"
; data(/AWMI:ItemLookupResponse/AWMI:OperationRequest/AWMI:RequestId)')
AS Expr1
FROM asin
访问一个结点的属性:
SELECT TOP (10)
dataxml.query('declare namespace AWMI="http://webservices.test.com/ABCDCommerceService/2005-10-05"
; data(/AWMI:ItemLookupResponse/AWMI:OperationRequest/AWMI:RequestId/@approved)')
AS Expr1
FROM asin
dataxml是我表中的字段名称,也就是类型为XML的字段.
先声明了一个命名空间,然后直接按照结点访问,就这么简单.至于属性就加个@就可以了
我们还可以给这个XML设置验证格式,当然,可以用XSD验证.
在写下面的语句:
CREATE XML SCHEMA COLLECTION [dbo].[requestSchemaCollection]
AS N'这里是XSD的内容'
注意编码在SQL里默认是UTF16的,你可以把编码那句删除.
创建成功以后就可以在programmablitity---types---XML schema collections里看到你创建的验证格式了.去修改你的表,把格式添加进table的XML列里.
在你用Visual Studio调用在SQL语句里直接解析XML的过程时,还可能出现类似错误:
UPDATE failed because the following SET options have incorrect settings: 'ARITHABORT'. Verify that SET options are correct for use with indexed views and/or indexes on computed columns and/or query notifications and/or xml data type methods.
如果有这个错误,你需要在语句里添加Set ARITHABORT ON来解决此问题.这些是最近在操作SQL2005时遇到的.如果你也在用,试试看吧
看看这个,也很有用
http://www.microsoft.com/china/msdn/library/data/sqlserver/XMLSupportinMicrosoftSQLServer2005.mspx