在sql2005中对不同XML的解析
2008-11-14 10:18
204 查看
view plaincopy to clipboardprint?--联机帮助:ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.zh-CHS/udb9/html/689297f3-adb0-4d8d-bf62-cfda26210164.htm
--eg1.
DECLARE @idoc int;
DECLARE @doc varchar(4000);
SET @doc ='
<flight>
<datetime> 2007-11-22 09:27:04 </datetime>
<method> MOD </method>
<type> A </type>
<flightinfor>
<flightattr> 21 </flightattr>
<aircrafttype> E145 </aircrafttype>
</flightinfor>
</flight>
'
EXEC sp_xml_preparedocument @Idoc OUTPUT, @doc --形成各节点(元素、属性、文本和注释等)的树状表示形式 返回一个句柄
SELECT * FROM OPENXML (@Idoc, '/FLIGHT/FLIGHTINFOR',2)WITH (
dt DATETIME '../DATETIME'
,METHOD varchar(20) '../METHOD'
,tp char(1)'../TYPE'
,FLIGHTATTR int 'FLIGHTATTR'
,AIRCRAFTTYPE varchar(10)'AIRCRAFTTYPE'
)
exec sp_xml_removedocument @Idoc
--结果:
/*
dt METHOD tp FLIGHTATTR AIRCRAFTTYPE
2007-11-22 09:27:04.000 MOD A 21 E145
*/
--eg2.
DECLARE @idoc int
DECLARE @doc varchar(1000)
SET @doc ='
<root>
<customer customerid="VINET" contactname="Paul Henriot">
<order customerid="VINET" orderid="10248" employeeid="5" orderdate="1996-07-04T00:00:00">
<orderdetail productid="11" quantity="12">
<orderdetail productid="42" quantity="10">
</orderdetail>
</orderdetail>
<customer customerid="LILAS" contactname="Carlos Gonzlez">
<order customerid="LILAS" orderid="10283" employeeid="3" orderdate="1996-08-16T00:00:00">
<orderdetail productid="72" quantity="3">
</orderdetail>
</order>
</customer>'
--Create an internal representation of the XML document.
EXEC sp_xml_preparedocument @idoc OUTPUT, @doc
-- SELECT stmt using OPENXML rowset provider
SELECT *
FROM OPENXML (@idoc, '/ROOT/Customer/Order/OrderDetail',2)
WITH (CustomerID2 varchar(10) '../../@CustomerID' ,
ContactName varchar(20) '../../@ContactName',
OrderID int '../@OrderID',
CustomerID varchar(10) '../@CustomerID',
OrderDate datetime '../@OrderDate',
ProdID int '@ProductID',
Qty int '@Quantity')
--结果:
/*
CustomerID2 ContactName OrderID CustomerID OrderDate ProdID Qty
VINET Paul Henriot 10248 VINET 1996-07-04 00:00:00.000 11 12
VINET Paul Henriot 10248 VINET 1996-07-04 00:00:00.000 42 10
LILAS Carlos Gonzlez 10283 LILAS 1996-08-16 00:00:00.000 72 3
*/
--eg3.
DECLARE @idoc int;
DECLARE @doc varchar(4000);
SET @doc ='
<flight>
<c>sdfsdf</c>
<datetime> 2007-11-22 09:27:04 </datetime>
<method> MOD </method>
<method> MOD23 </method>
<method> MOD22 </method>
<method> MOD2 5</method>
<type> A </type>
<flightinfor>
<flightattr> 21 </flightattr>
<aircrafttype> E145 </aircrafttype>
<method> MOD22 </method>
<c2>
<c3>dfsdfs</c3>
</c2>
</flightinfor>
</flight>
'
EXEC sp_xml_preparedocument @Idoc OUTPUT, @doc --形成各节点(元素、属性、文本和注释等)的树状表示形式 返回一个句柄
SELECT * FROM OPENXML (@Idoc, '/FLIGHT',2)WITH (
-- DATETIME2 DATETIME '../DATETIME'
METHOD varchar(200) '..//METHOD/'
-- ,TYPE char(1) '../TYPE'
-- ,FLIGHTATTR int 'FLIGHTATTR'
-- ,AIRCRAFTTYPE varchar(10)'AIRCRAFTTYPE'
--,METHOD2 varchar(10) 'METHOD'
)
exec sp_xml_removedocument @Idoc
--结果:
/*
sdfsdf 2007-11-22 09:27:04 MOD MOD23 MOD22 MOD2 5 A 21 E145 MOD22 dfsdfs
/*
<pre></pre></order></customer></root>
--eg1.
DECLARE @idoc int;
DECLARE @doc varchar(4000);
SET @doc ='
<flight>
<datetime> 2007-11-22 09:27:04 </datetime>
<method> MOD </method>
<type> A </type>
<flightinfor>
<flightattr> 21 </flightattr>
<aircrafttype> E145 </aircrafttype>
</flightinfor>
</flight>
'
EXEC sp_xml_preparedocument @Idoc OUTPUT, @doc --形成各节点(元素、属性、文本和注释等)的树状表示形式 返回一个句柄
SELECT * FROM OPENXML (@Idoc, '/FLIGHT/FLIGHTINFOR',2)WITH (
dt DATETIME '../DATETIME'
,METHOD varchar(20) '../METHOD'
,tp char(1)'../TYPE'
,FLIGHTATTR int 'FLIGHTATTR'
,AIRCRAFTTYPE varchar(10)'AIRCRAFTTYPE'
)
exec sp_xml_removedocument @Idoc
--结果:
/*
dt METHOD tp FLIGHTATTR AIRCRAFTTYPE
2007-11-22 09:27:04.000 MOD A 21 E145
*/
--eg2.
DECLARE @idoc int
DECLARE @doc varchar(1000)
SET @doc ='
<root>
<customer customerid="VINET" contactname="Paul Henriot">
<order customerid="VINET" orderid="10248" employeeid="5" orderdate="1996-07-04T00:00:00">
<orderdetail productid="11" quantity="12">
<orderdetail productid="42" quantity="10">
</orderdetail>
</orderdetail>
<customer customerid="LILAS" contactname="Carlos Gonzlez">
<order customerid="LILAS" orderid="10283" employeeid="3" orderdate="1996-08-16T00:00:00">
<orderdetail productid="72" quantity="3">
</orderdetail>
</order>
</customer>'
--Create an internal representation of the XML document.
EXEC sp_xml_preparedocument @idoc OUTPUT, @doc
-- SELECT stmt using OPENXML rowset provider
SELECT *
FROM OPENXML (@idoc, '/ROOT/Customer/Order/OrderDetail',2)
WITH (CustomerID2 varchar(10) '../../@CustomerID' ,
ContactName varchar(20) '../../@ContactName',
OrderID int '../@OrderID',
CustomerID varchar(10) '../@CustomerID',
OrderDate datetime '../@OrderDate',
ProdID int '@ProductID',
Qty int '@Quantity')
--结果:
/*
CustomerID2 ContactName OrderID CustomerID OrderDate ProdID Qty
VINET Paul Henriot 10248 VINET 1996-07-04 00:00:00.000 11 12
VINET Paul Henriot 10248 VINET 1996-07-04 00:00:00.000 42 10
LILAS Carlos Gonzlez 10283 LILAS 1996-08-16 00:00:00.000 72 3
*/
--eg3.
DECLARE @idoc int;
DECLARE @doc varchar(4000);
SET @doc ='
<flight>
<c>sdfsdf</c>
<datetime> 2007-11-22 09:27:04 </datetime>
<method> MOD </method>
<method> MOD23 </method>
<method> MOD22 </method>
<method> MOD2 5</method>
<type> A </type>
<flightinfor>
<flightattr> 21 </flightattr>
<aircrafttype> E145 </aircrafttype>
<method> MOD22 </method>
<c2>
<c3>dfsdfs</c3>
</c2>
</flightinfor>
</flight>
'
EXEC sp_xml_preparedocument @Idoc OUTPUT, @doc --形成各节点(元素、属性、文本和注释等)的树状表示形式 返回一个句柄
SELECT * FROM OPENXML (@Idoc, '/FLIGHT',2)WITH (
-- DATETIME2 DATETIME '../DATETIME'
METHOD varchar(200) '..//METHOD/'
-- ,TYPE char(1) '../TYPE'
-- ,FLIGHTATTR int 'FLIGHTATTR'
-- ,AIRCRAFTTYPE varchar(10)'AIRCRAFTTYPE'
--,METHOD2 varchar(10) 'METHOD'
)
exec sp_xml_removedocument @Idoc
--结果:
/*
sdfsdf 2007-11-22 09:27:04 MOD MOD23 MOD22 MOD2 5 A 21 E145 MOD22 dfsdfs
/*
<pre></pre></order></customer></root>
相关文章推荐
- 在sql2005中对不同XML的解析.
- 不同浏览器对XML的解析问题(解决了多天困扰的问题)
- Java解析Xml文件—判断Xml文件的节点是否存在子节点_以及对节点下不同子节点的内容解析方式
- Ios XML 不同解析方法比较
- Java解析Xml文件—判断Xml文件的节点是否存在子节点_以及对节点下不同子节点的内容解析方式
- XML数据解析方式各有什么不同,JSON解析有哪些框架?
- 四种不同的XML解析方法
- android中用XmlPullParser解析XML文件,以及res/raw和assets的不同
- JDOM和DOM4J解析含有XML字符串的不同方式
- iOS--XML三种解析方法( XMLDictionary)、(GDataXMLNode)、(NSXMLParser)
- ArcGIS Flex API 中的 Flex 技术(四)--XML 解析
- Android Animation学习(三) ApiDemos解析:XML动画文件的使用
- java解析xml的几种方式(转)
- Android进阶2之SAX方法解析XML
- JavaSE练习 XML解析-Dom4j使用
- CCDictionary 解析xml总结
- ie无法使用jquery解析xml
- XML解析(SAX)
- Ibatis#加载和解析SqlMapConfig.xml