1 先上代码和截图
代码
--定义XML文本
declare @xmlText varchar(1000)
--文档句柄
declare @hdoc int
--设定XML文本内容
set @xmlText =
'
<?xml version="1.0" encoding="gbk"?>
<root>
<Stu id1="03" studentName1="小张11"></Stu>
<Stu id1="04" studentName1="小李11"></Stu>
</root>
'
--解析XML文本内容
exec sp_xml_preparedocument @hdoc output,@xmlText
--读取XML的内容
select t.* from openxml(@hdoc,'root/Stu') with(id1 int,studentName1 varchar(20)) as t
exec sp_xml_removedocument @hdoc
id1 studentName1
----------- --------------------
3 小张11
4 小李11
(2 行受影响)
2 sp_xml_preparedocument 和 openxml用法
下面摘自MSDN:
读取作为输入提供的 XML 文本,然后使用 MSXML 分析器 (Msxmlsql.dll) 对其进行分析,并提供分析后的文档供使用。分析后的文档对 XML 文档中的各节点(元素、属性、文本和注释等)的树状表示形式。
sp_xml_preparedocument 返回一个句柄,可用于访问 XML 文档的新创建的内部表示形式。该句柄在会话的持续时间内有效,或者通过执行 sp_xml_removedocument 使其在句柄失效前一直有效。
3 更详细用法参考文档