簡體   English   中英

Xml.nodes TSQL-空值

[英]Xml.nodes tsql - empty value

declare @xmlWithElements xml = N'
<Elements>
  <Element Guid="bc7a96e1-1d8e-4339-ace0-41bf593036ee">
    <TradeDocument GUID="BC7A96E1-1D8E-4339-ACE0-41BF593036EE" >
      <Numerator>
        <Element Value="PAR" />
        <Element Value="2016" />
      </Numerator>
      <Items>
        <Item OrdinalNumber="1" ProductId="5045" ProductCode="qq" ProductNameVersion="1" Quantity="1.0000" QuantityInBasicUnit="1.0000" UnitId="1" CurrencyId="1" ToPay="167.1000" ToPayNet="135.8500" ProductInitialPrice="175.8900" ProductInitialNetPrice="143.0000" ProductEndPrice="167.1000" ProductEndNetPrice="136.1000" CalculatedDiscountPrice="-8.7900" CalculatedDiscountNetPrice="-6.7900" CalculatedDiscountInPercentage="5.0000" CalculatedDiscountValue="-8.7900" CalculatedDiscountNetValue="-6.7900" EmpoyeeDiscountValue="0.0000" EmpoyeeDiscountNetValue="0.0000" CumulativeDiscountInPercentage="0.0000" CumulativeDiscountValue="0.0000" CumulativeDiscountNetValue="0.0000" PriceCalculationPrecision="0" HeaderPercentageDiscount="0.0000" HeaderValueDiscount="0.0000" ManualUserDiscountInPercentage="0.0000" EmployeeDiscountInPercentage="0.0000" SelectedBarcodeId="0" LotId="4165" AssistantId="3" PriceTypeId="1" BundleCode="" BundleQuantity="0.0000" Points="0" QuantityBeforeCorrection="0.0000" QuantityAfterCorrection="0.0000" PurchaseValue="0.0000" SourceOrdinalNumber="0" VATRateId="2" />
      </Items>
      <Payments>
        <Payment NumberString="KP/2016/PKO BP/00013/" OrdinalNumber="1" PaymentFormId="4" CashBankAccountId="2" Type="1" SystemValue="167.10" CurrencyValue="167.10" CurrencyId="1" Numerator="1" Denominator="1" DocumentDate="2016-05-04 12:17:02.613" ExchangeRateDate="2016-04-29 10:05:43.297" AffectsCashRegisterBalance="true"/>
      </Payments>
      <VATAggregates>
        <VATAggregate VATRateId="2" NetValue="135.85" GrossValue="167.10" VATValue="31.25" />
      </VATAggregates>
    </TradeDocument>
  </Element>
</Elements>'

SELECT
    Guid = XElement.XProperty.value('@Guid','uniqueidentifier'),
    Data = XElement.XProperty.value('(value)[1]','nvarchar(max)')
FROM
    @xmlWithElements.nodes('Elements/Element') AS XElement(XProperty)

declare @xml2 nvarchar(max) = Convert(nvarchar(max), @xmlWithElements.query('/Elements/Element/*'))

select @xml2

我有特定的xml,我想讓每個孩子(帶有name element )。

不幸的是,此方法不起作用,我找不到任何有效的解決方案(數據返回null)。

這段代碼有什么問題?

更新

當我在數據屬性中使用時

Data = XElement.XProperty.value('.','nvarchar(max)') 

我得到一個空列(不為空)

如果您-我希望能正確理解-想要內部xml不變,則可以嘗試以下操作:

declare @xmlWithElements xml = 
N'<Elements>
  <Element Guid="bc7a96e1-1d8e-4339-ace0-41bf593036ee">
    <TradeDocument GUID="BC7A96E1-1D8E-4339-ACE0-41BF593036EE" >
      <Numerator>
        <Element Value="PAR" />
        <Element Value="2016" />
      </Numerator>
      <Items>
        <Item OrdinalNumber="1" ProductId="5045" ProductCode="qq" ProductNameVersion="1" Quantity="1.0000" QuantityInBasicUnit="1.0000" UnitId="1" CurrencyId="1" ToPay="167.1000" ToPayNet="135.8500" ProductInitialPrice="175.8900" ProductInitialNetPrice="143.0000" ProductEndPrice="167.1000" ProductEndNetPrice="136.1000" CalculatedDiscountPrice="-8.7900" CalculatedDiscountNetPrice="-6.7900" CalculatedDiscountInPercentage="5.0000" CalculatedDiscountValue="-8.7900" CalculatedDiscountNetValue="-6.7900" EmpoyeeDiscountValue="0.0000" EmpoyeeDiscountNetValue="0.0000" CumulativeDiscountInPercentage="0.0000" CumulativeDiscountValue="0.0000" CumulativeDiscountNetValue="0.0000" PriceCalculationPrecision="0" HeaderPercentageDiscount="0.0000" HeaderValueDiscount="0.0000" ManualUserDiscountInPercentage="0.0000" EmployeeDiscountInPercentage="0.0000" SelectedBarcodeId="0" LotId="4165" AssistantId="3" PriceTypeId="1" BundleCode="" BundleQuantity="0.0000" Points="0" QuantityBeforeCorrection="0.0000" QuantityAfterCorrection="0.0000" PurchaseValue="0.0000" SourceOrdinalNumber="0" VATRateId="2" />
      </Items>
      <Payments>
        <Payment NumberString="KP/2016/PKO BP/00013/" OrdinalNumber="1" PaymentFormId="4" CashBankAccountId="2" Type="1" SystemValue="167.10" CurrencyValue="167.10" CurrencyId="1" Numerator="1" Denominator="1" DocumentDate="2016-05-04 12:17:02.613" ExchangeRateDate="2016-04-29 10:05:43.297" AffectsCashRegisterBalance="true"/>
      </Payments>
      <VATAggregates>
        <VATAggregate VATRateId="2" NetValue="135.85" GrossValue="167.10" VATValue="31.25" />
      </VATAggregates>
    </TradeDocument>
  </Element>
</Elements>';

SELECT Elmt.value('@Guid','uniqueidentifier') AS [Guid]
      ,Elmt.query('*') AS [Data]
FROM @xmlWithElements.nodes('Elements/Element') AS A(Elmt)

暫無
暫無

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

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