SQL解析XML具体元素的属性

w199096zx 2013-04-30 02:56:08
DECLARE @myDoc XML
DECLARE @imyDoc INT
SET @myDoc = '<IpList>
<StartIP>1.1.1.1</StartIP>
<EndIP>2.2.2.2</EndIP>
</IpList>'
EXECUTE SP_XML_PREPAREDOCUMENT @imyDoc OUTPUT, @myDoc
Create table #XMLa
(
StartIP varchar(100),
EndIP varchar(500)
)
INSERT INTO #XMLa SELECT *
FROM OPENXML (@imyDoc, '@myDoc', 1)
WITH(StartIP char(100) 'StartIP',EndIP varchar(100) 'EndIP')

EXECUTE SP_XML_REMOVEDOCUMENT @imyDoc
go
select * from #XMLa

drop table #XMLa


如代码。这段xml很好解析就这样写就可以解析出来,但是现在我遇到麻烦了,真正的xml结构是这样的
<EthernetLink>  
<HubSpoke>H</HubSpoke>
<IsCustomerWANIP>N</IsCustomerWANIP>
<LAN_IP NormalRADCE=\"I\" />
<RAD_CE_IP Type=\"Yes\" NormalRADCE=\"R\" />
<MegapopIPAddress>
<InternetProtocol>IPv4</InternetProtocol>
<WanIP>Yes</WanIP>
<NetworkInformation>Static IP</NetworkInformation>
<IpList>
<IP StartIP=\"1.1.1.1\" EndIP=\"2.2.2.2\" />
</IpList>
<WanIpProviderEndIP>3.3.3.3</WanIpProviderEndIP>
<WanIpCustomerEndIP>4.4.4.4</WanIpCustomerEndIP>
<IsIsp>false</IsIsp>
<Bgp>false</Bgp>
</MegapopIPAddress>
</EthernetLink>"

其中<IpList>
<IP StartIP=\"1.1.1.1\" EndIP=\"2.2.2.2\" />
</IpList> 是作为元素属性存在的,现在跪求各位高手指点下这个怎么解析出来?急求
...全文
187 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
唐诗三百首 2013-05-02
  • 打赏
  • 举报
回复

declare @myDoc xml

set @myDoc = '<EthernetLink>  
<HubSpoke>H</HubSpoke>  
<IsCustomerWANIP>N</IsCustomerWANIP>
<LAN_IP NormalRADCE="I\"></LAN_IP>  
<RAD_CE_IP Type="Yes\" NormalRADCE="R\"></RAD_CE_IP> 
<MegapopIPAddress>
<InternetProtocol>IPv4</InternetProtocol>    
<WanIP>Yes</WanIP>    
<NetworkInformation>Static IP</NetworkInformation>  
<IpList>     
 <IP StartIP="1.1.1.1" EndIP="2.2.2.2" />    
</IpList>    
<WanIpProviderEndIP>3.3.3.3</WanIpProviderEndIP>   
<WanIpCustomerEndIP>4.4.4.4</WanIpCustomerEndIP>    
<IsIsp>false</IsIsp>    
<Bgp>false</Bgp>  
</MegapopIPAddress>
</EthernetLink>'

create table #XMLa 
(StartIP varchar(20),
 EndIP varchar(20))

insert into #XMLa
 select T.c.value('@StartIP[1]', 'varchar(20)'),
        T.c.value('@EndIP[1]', 'varchar(20)')
 from @myDoc.nodes('/EthernetLink/MegapopIPAddress/IpList/IP') T(c)


select * from #XMLa

/*
StartIP              EndIP
-------------------- --------------------
1.1.1.1              2.2.2.2

(1 row(s) affected)
*/
daiyueqiang2045 2013-05-01
  • 打赏
  • 举报
回复
http://www.cnblogs.com/zhengyun_ustc/archive/2006/06/29/sqlxml_forxmlexplicit.html

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧