我有一个XML
<MT5 v="1.0.0">
<L>
<PKL>115</PKL>
<DID>c4c0fee0cb7bc70755d0c996e02431ed6e36f5b0031108</DID>
<OCD>2014-04-07T17:13:45</OCD>
<DDT>2014-04-07T17:13:45</DDT>
<D>
<PKD o="1">1001</PKD>
<PKD o="2">1002</PKD>
</D>
</L>
</MT5>
我需要获得如下价值 PKL PKD O. 115 1001 1 115 1002 2
我使用以下查询获取数据但未获取如何选择&#39; O&#39;
的值SELECT @xmldoc2.value('(/MT5/L/PKL)[1]', 'int' ) AS PKL,
L.PKD.value('.', 'int') AS PKD,
'Dont konw how to pick value of o' AS O
FROM
@xmldoc2.nodes('MT5/L/D/PKD') L(PKD)
我该怎么做?
答案 0 :(得分:0)
select L.N.value('(PKL/text())[1]', 'int') as PKL,
P.N.value('text()[1]', 'int') as PKD,
P.N.value('@o', 'int') as O
from @xmldoc2.nodes('/MT5/L') as L(N)
cross apply L.N.nodes('D/PKD') as P(N)
答案 1 :(得分:0)
在以下节点中:
<PKD o="2">1002</PKD>
“o”是一个属性。在XPath中,您可以使用@符号引用属性。 @o
。在完整的示例中,您可以通过仅向XML 值方法提供属性引用来选择“o”。
SELECT
@xmldoc2.value('(/MT5/L/PKL)[1]', 'int' ) AS PKL,
L.PKD.value('.', 'int') AS PKD,
L.PKD.value('@o', 'int') AS O,
FROM
@xmldoc2.nodes('MT5/L/D/PKD') L(PKD)