2
私はXMLファイルをSQLテーブルに格納しています。今、私はSQLを使ってzの特定の要素の値を読みたいと思っています。XMLから特定の要素を選択XML名前空間
XMLに名前空間要素がない場合、XMLから特定の要素値を読み取ることができます。私は名前空間を持つXMLファイルを読んでみたい。ここで
は私のXMLファイルである:ここで
<currency:Envelope xmlns="http://www.currency.com/eurofxref" xmlns:currency="http://www.currency.org/xml/2002-08-01">
<Cube>
<Cube time="2016-11-04">
<Cube currency="USD" rate="1.1093" />
<Cube currency="JPY" rate="114.24" />
<Cube currency="BGN" rate="1.9558" />
<Cube currency="CZK" rate="27.021" />
</Cube>
</Cube>
</currency:Envelope>
は値を読み取るためのSQLコードです:
CREATE TABLE XMLwithOpenXML
(
Id INT IDENTITY PRIMARY KEY,
XMLData XML,
LoadedDateTime DATETIME
)
INSERT INTO XMLwithOpenXML(XMLData, LoadedDateTime)
SELECT CONVERT(XML, BulkColumn) AS BulkColumn, GETDATE()
FROM OPENROWSET(BULK 'E:\currency.xml', SINGLE_BLOB) AS x;
SELECT XMLData.value('(Cube/Cube/Cube[@currency="USD"]/@rate)[1]','VARCHAR(MAX)')
FROM XMLwithOpenXML
+1私の側から。ワイルドカードを使用する可能性があるため(*:Envelope/*:Cube/*:Cube/*:Cube [通貨= "USD"]/@ *:レート)[1] '、' nvarchar(max) ') ')。だから私は最初に '/ /'を避けるだろう... – Shnugo
@ Shnugoこんにちは!実際、*を選択する必要があるのはおそらく少し厳しいかもしれません。私は、同じ要素名を定義する複数の名前空間があるかどうかわからないときは、一般的なアドバイスをエコーしています。しかし、この場合、ネームスペースが1つしかない場合は、ワイルドカードネームスペース修飾子を選択できます。 –