xPath - Microsoft Sql - 如何从所有子节点获取特定属性

时间:2016-09-27 17:20:08

标签: sql-server xpath

我有这样的XML:

    <Table Name="Table">
        <TableHeader>
          <TableCol Name="Date"/>
          <TableCol Name="Number"/>
          <TableCol Name="Reason"/>
          <TableCol Name="Time"/> 
        </TableHeader>
 </Table>

我希望得到这样的结果:

HeaderName
-------------------
Date
Number
Reason
Time

我的xPath查询是这样的:

SELECT  *   FROM    OPENXML (@xmlHandle, @docDescriptionTable)
wITH (  HeaderName  varchar(255) '/Table/TableHeader//TableCol/@Name'       );          

我得到了这个结果:

HeaderName
---------
Date

我做错了什么?

1 个答案:

答案 0 :(得分:1)

以下是使用nodes() Method

的一种方法
declare @xml xml  = '  <Table Name="Table">
        <TableHeader>
          <TableCol Name="Date"/>
          <TableCol Name="Number"/>
          <TableCol Name="Reason"/>
          <TableCol Name="Time"/> 
        </TableHeader>
 </Table>'

SELECT
   col.value('./@Name','varchar(50)')
FROM
   @xml.nodes('/Table/TableHeader/TableCol') AS t(col)

结果:

HeaderName
----------
Date
Number
Reason
Time