1

我有一个如下所示的 XML:

   <Weather Location="Tuzla, Bosnia and Herzegovina">
  <Forecast>
     <Description>sky is clear</Description>
     <IconID>01d</IconID>
     <Date>2013-09-14</Date>
     <MinTemp>11</MinTemp>
     <MaxTemp>21</MaxTemp>
     <Pressure>994</Pressure>
     <Humidity>39</Humidity>
     <Wind>2</Wind>
   </Forecast>
   <Forecast>
     <Description>scattered clouds</Description>
     <IconID>03d</IconID>
     <Date>2013-09-15</Date>
     <MinTemp>9</MinTemp>
     <MaxTemp>24</MaxTemp>
     <Pressure>991</Pressure>
     <Humidity>44</Humidity>
     <Wind>1</Wind>
  </Forecast>
  <Forecast>
 ... //it has 10 Forecast parts   
</Weather>

在我的数据库中,我的表只有两个字段,ID 和这个 XML。因此,当我插入新的 XML 时,我必须查明是否已经存在具有此位置的 XML,以及第一个预测部分的日期是否相同。有什么方法可以从这个根元素 Weather 的第一个 Forecast 子项中读取 Date 吗?我知道我必须遍历我的表并搜索我拥有的每个 XML 文件,这不是问题,但我需要的只是从第一个预测孩子开始的日期。

请帮忙...

4

1 回答 1

2

您可以从第一个预测和位置中读取日期(假设这是 SQL Server)

select
    t.Data.value('(Weather/@Location)[1]', 'nvarchar(max)') as Location,
    t.Data.value('(Weather/Forecast/Date)[1]', 'date') as Date
from table1 as t

sql fiddle demo

于 2013-09-14T16:29:16.737 回答