3
當您從XML和節點中刪除<data>
包裝時,此代碼正常工作,但是當您添加它時,如下所示,我得到0個結果。當XML有2個包裝時,無法讀取內容
-- Declare XML variable
DECLARE @data XML;
-- Element-centered XML
SET @data =
N'
<data xmlns="test.xsd">
<subdata>
<customer>
<id>1</id>
<name>Allied Industries</name>
</customer>
<customer>
<id>2</id>
<name>Trades International</name>
</customer>
</subdata>
</data>';
-- Using the query() method
SELECT T.customer.query('id').value('.', 'INT') AS customer_id,
T.customer.query('name').value('.', 'VARCHAR(20)') AS customer_name
FROM @data.nodes('data/subdata/customer') AS T(customer);
但正常工作時,我不喜歡這樣寫道:
-- Element-centered XML
SET @data =
N'
<subdata>
<customer>
<id>1</id>
<name>Allied Industries</name>
</customer>
<customer>
<id>2</id>
<name>Trades International</name>
</customer>
</subdata>
';
-- Using the query() method
SELECT T.customer.query('id').value('.', 'INT') AS customer_id,
T.customer.query('name').value('.', 'VARCHAR(20)') AS customer_name
FROM @data.nodes('subdata/customer') AS T(customer);
有誰知道爲什麼我沒有在第一個例子中得到結果,當<data>
父包裝是嗎?
雅它做了,謝謝..我也有這個'<?xml version =「1.0」encoding =「utf-8」?>'的另一個問題,當它從上面開始,我得到一個錯誤,說'不能改變xml的編碼類型,如果你很快就知道它,你怎麼得到這個當你的xm l文件在頂部帶有這個文件嗎? –
@ZeeTee:我相信如果你用一個'N'來給你的XML數據加前綴,那麼它不會像utf-8聲明(因爲它現在是一個'NVARCHAR'字符串,因此使用UCS-2 Unicode編碼)。要麼刪除該XML聲明行,要麼刪除「N」前綴。 –
是的,你真棒,那(刪除N')也做了伎倆..謝謝! –