1
要素/属性の値がXMLのどこに存在するかに関係なく、その値を検索しようとしています。XMLの任意の場所で要素または属性の値を検索
XML:
<?xml version="1.0" encoding="UTF-8"?>
<cXML payloadID="12345677-12345567" timestamp="2017-07-26T09:11:05">
<Header>
<From>
<Credential domain="1212">
<Identity></Identity>
<SharedSecret/>
</Credential>
</From>
<To>
<Credential domain="1212">
<Identity></Identity>
</Credential>
</To>
<Sender>
<UserAgent/>
<Credential domain="8989">
<Identity>10678</Identity>
<SharedSecret>Testing123</SharedSecret>
</Credential>
</Sender>
</Header>
<Request deploymentMode="Prod">
<ConfirmationRequest>
<ConfirmationHeader noticeDate="2017-07-26T09:11:05" operation="update" type="detail">
<Total>
<Money>0.00</Money>
</Total>
<Shipping>
<Description>Delivery</Description>
</Shipping>
<Comments>WO# generated</Comments>
</ConfirmationHeader>
<OrderReference orderDate="2017-07-25T15:22:11" orderID="123456780000">
<DocumentReference payloadID="5678-4567"/>
</OrderReference>
<ConfirmationItem quantity="1" lineNumber="1">
<ConfirmationStatus quantity="1" type="detail">
<ItemIn quantity="1">
<ItemID>
<SupplierPartID>R954-89</SupplierPartID>
</ItemID>
<ItemDetail>
<UnitPrice>
<Money currency="USD">0.00</Money>
</UnitPrice>
<Description>Test Descritpion 1</Description>
<UnitOfMeasure>QT</UnitOfMeasure>
</ItemDetail>
</ItemIn>
</ConfirmationStatus>
</ConfirmationItem>
<ConfirmationItem quantity="1" lineNumber="2">
<ConfirmationStatus quantity="1" type="detail">
<ItemIn quantity="1">
<ItemID>
<SupplierPartID>Y954-89</SupplierPartID>
</ItemID>
<ItemDetail>
<UnitPrice>
<Money currency="USD">0.00</Money>
</UnitPrice>
<Description>Test Descritpion 2</Description>
<UnitOfMeasure>QT</UnitOfMeasure>
</ItemDetail>
</ItemIn>
</ConfirmationStatus>
</ConfirmationItem>
</ConfirmationRequest>
</Request>
</cXML>
私はDocumentReference
要素にpayloadID
の値を取得したいです。
BEGIN
Declare @Xml xml
Set @Xml = ('..The XML From Above..' as xml)
END
--no value comes back
Select c.value('(/*/DocumentReference/@payloadID)[0]','nvarchar(max)') from @Xml.nodes('//cXML') x(c)
--no value comes back
Select c.value('@payloadID','nvarchar(max)') from @Xml.nodes('/cXML/*/DocumentReference') x(c)
--check if element exists and it does
Select @Xml.exist('//DocumentReference');
を私は、XPathエディタでこれを試してみました://DocumentReference/@payloadID
これは、作業を行いますが、私は同等の構文は.nodes()
(などを呼び出すSQL
'セレクトc.value( '@ payloadID'、 'NVARCHAR(MAX)')@ Xml.nodes( '// DocumentReference')からのx ...働くことができません(c) '? – Siyual
@Siyual、ああ男!同様の例は、常にルート要素への参照を持っていたので、私はそれが必要だと思った。私はそれを試みたこともありません。答えとして投稿したい場合は、それは素晴らしいでしょう。 – DDiVita