当前位置: 代码迷 >> Sql Server >> sql中读取xml的有关问题.
  详细解决方案

sql中读取xml的有关问题.

热度:97   发布时间:2016-04-24 10:17:29.0
sql中读取xml的问题........................................................
我有段xml是这样的
<xmlPhone>
<phones>
<phone>15711111116</phone>
<phone>13632323235</phone>
<phone>13843333334</phone>
<phone>13822222223</phone>
<phone>13833333332</phone>
<phone>13811111111</phone>
<phone>15711111116</phone>
<phone>13632323235</phone>
<phone>13843333334</phone>
<phone>13822222223</phone>
<phone>13833333332</phone>
</phones>
</xmlPhone>
但是我在数据库里面解析xml的时候,代码如下

 exec sp_xml_preparedocument @idoc OUTPUT, @xmlPhone                              
   SELECT  * into #fsphone                             
   FROM OPENXML (@idoc, '/xmlPhone/phones',3)                              
   WITH (                              
      phone    varchar(30) --发送号码                                                                                   
   )                              
   EXEC sp_xml_removedocument @idoc                              
   if @@ERROR<>0                              
   begin                               
     select 'F' as rst,'解析数据失败!' as msg                                
     goto ErrorHandle                              
   end     
select * from #fsphone
  

只能得到第一条的数据,无法得到所有的数据,是不是节点名称相同的xml只能读取到一个?如果能读取名称重复的节点,请指教....
------解决方案--------------------

------解决方案--------------------
引用:
Quote: 引用:

还是第一次用 openxml ,感觉不错
declare @xx varchar(max) = '<xmlPhone>
<phones>
<phone>15711111116</phone>
<phone>13632323235</phone>
<phone>13843333334</phone>
<phone>13822222223</phone>
<phone>13833333332</phone>
<phone>13811111111</phone>
<phone>15711111116</phone>
<phone>13632323235</phone>
<phone>13843333334</phone>
<phone>13822222223</phone>
<phone>13833333332</phone>
</phones>
</xmlPhone>';
declare @idoc int
 exec sp_xml_preparedocument @idoc OUTPUT, @xx                            
   SELECT  *                         
   FROM OPENXML (@idoc, '/xmlPhone/phones/phone',3)                              
   WITH (                              
      phone    varchar(30) '.' --发送号码                                                                                   
  相关解决方案