簡體   English   中英

獲取XML節點屬性值

[英]Get XML Node attribute value

我有一個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

我正在使用以下查詢來獲取數據,但未獲取如何選擇“ O”的值

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)

我怎樣才能做到這一點 ?

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)

SQL小提琴

在以下節點中:

<PKD o="2">1002</PKD>

“ o”是一個屬性。 在XPath中,可以使用@符號引用屬性。 @o 在完整的示例中,只需將屬性引用提供給XML value方法,就可以選擇“ 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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM