我有一个像这样的xml文档:
<root>
<e1>
<l2>
..
</l2>
</e1>
<e2>
...
</e2>
...
</root>
我想提取元素的直接子元素列表中只有元素标记名称,例如对于root我只想获取e1,而e2(只是标记(元素)名称不是整个元素)和e1我想再次获得l2标记名
是否可以在SQL Server 2012中执行此操作?
答案 0 :(得分:4)
这样的东西?
DECLARE @input XML = '<root>
<e1>
<l2>
<data1>test</data1>
</l2>
<l3>
<data3>test3</data3>
</l3>
</e1>
<e2>
<data1>test</data1>
<data2>test2</data2>
</e2>
</root>'
要获取<root>
下的直接后代节点,您可以使用此查询:
SELECT
XC.value('local-name(.)', 'varchar(20)')
FROM
@input.nodes('/root/*') AS XT(XC)
返回:
e1
e2
此查询获取<e2>
的后代:
SELECT
XC.value('local-name(.)', 'varchar(20)')
FROM
@input.nodes('/root/e2/*') AS XT(XC)
返回:
data1
data2