尝试解析多个 xml 文件。 但是在应用交叉应用时堆栈
第一个变体工作正常
DECLARE @input XML =
'<a>
<b>
<g>one</g>
<n>
<c>somedata1 1</c>
</n>
<n>
<c>2somedata 2</c>
</n>
</b>
</a>'
SELECT
g = XC.value('(g)[1]', 'varchar(100)'),
i = xc1.n1.value ('(c)[1]', 'varchar(100)')
FROM @input.nodes ('a/b') as XT (XC)
cross apply @input.nodes ('//n') as xc1(n1)
第二个变体失败(返回空字段)-我知道这是因为缺少 <с> 节点
DECLARE @input XML =
'<a>
<b>
<g>one</g>
</b>
</a>'
SELECT
g = XC.value('(g)[1]', 'varchar(100)'),
i = xc1.n1.value ('(c)[1]', 'varchar(100)')
FROM @input.nodes ('a/b') as XT (XC)
cross apply @input.nodes ('//n') as xc1(n1)
我处理多个文件,其中一些有这些节点,有些没有,我的决定应该是什么?
在第二种情况下,你没有任何
n
元素。你需要使用