Aracılığıyla paylaş


xml veri örnekleri oluşturma

Bu konu, xml örnekleri oluşturmak açıklar.

De SQL Server, xml örnekleri aşağıdaki şekillerde oluşturabilirsiniz:

  • Dize örnekleri vuran türü.

  • select deyimi, for xml yan tümcesi ile kullanma.

  • Sabit atamaları kullanıyor.

  • BULK load kullanma.

Dize ve ikili örnekleri vuran türü

Hiçbirini ayrıştırabileceğiniz SQL Servergibi veri türleri, dize [n]varchar, [n] metin, varbinary, ve Resim, içine xml veri türünü (cast) döküm veya dönüştürme (convert) dize xml veri türü. Yazılmamış xml, iyi biçimlendirilmiş onaylamak için kontrol edilir. Eğer orada bir şema ilişkili xml türü, doğrulama da gerçekleştirilir. Daha fazla bilgi için, bkz. Yazılı xml yazılmamış xml karşılaştırın.

xml belgeleri farklı kodlamaları ile kodlanmış (örneğin, utf-8, utf-16, windows-1252). Aşağıdaki dize ve ikili kaynak türleri xml belgesi kodlamasıyla etkileşimini ve ayrıştırıcı nasıl davranacağını kurallar açıklanmaktadır.

Çünkü nvarchar iki baytlık unicode varsayar bir iki baytlık Unicode kodlu xml belgesi veya parça olarak kodlama utf-16 veya ucs-2 gibi xml parser dize değerini görür. Bu xml belgesi iki baytlık Unicode olarak kodlanmış gerektiğini de kaynak veri türü ile uyumlu olacak şekilde kodlama demektir. xml bir utf-16 kodlu belge utf-16 bayt sırası işareti (bom), olabilir ama bunun için gerekli değildir, kaynak türü bağlamında yapar çünkü o sadece bir iki baytlık Unicode olabilir açık belge kodlanmış.

İçeriği bir varchar dizesi bir baytlık kodlanmış xml belge/parçası xml parser tarafından kabul. Çünkü varchar kaynak dizesi vardır ilişkili bir kod sayfası, ayrıştırıcı hiçbir açık kodlama xml biçiminde bir xml örneği bir ürün Reçetesi veya bir kodlama bildirimi, ürün Reçetesi veya bildirimi aksi ayrıştırıcı hata rapor kod sayfası ile tutarlı olması gerekmektedir belirtilmezse, kodlama için bu kod sayfasını kullanır.

İçeriği varbinary doğrudan xml Ayrıştırıcı için geçirilen CODEPOINT akışı olarak değerlendirilir. Böylece, xml belgesi veya parça ürün Reçetesi veya diğer kodlama bilgisi satır içi sağlaması gerekir. Ayrıştırıcı yalnızca akış kodlama belirlemek için bakacağız. Yani xml, utf-16 ÜR sağlamak gerekiyor utf-16 kodlanmış ve örnek ürün Reçetesi ve bir bildirimi kodlama olmadan utf-8 olarak yorumlanacaktır.

xml belgenin kodlama önceden bilinmiyor ve veri iletilir dize veya ikili veriler xml verileri önce döküm yerine xml, veri tedavi önerilir Eğer varbinary. Örneğin, veri OpenRowset() kullanarak bir xml dosyasından okunurken bir olarak okumak için verileri belirtmek bir varbinary(max) değeri:

select CAST(x as XML) 
from OpenRowset(BULK 'filename.xml', SINGLE_BLOB) R(x)

SQL ServerDahili xml kodlama utf-16 kullanan bir verimli ikili gösterimi gösterir. Kullanıcı tarafından sağlanan kodlama korunmaz, ancak ayrıştırma işlemi sırasında kabul edilir.

Tip döküm clr kullanıcı tanımlı türler

Bir clr türü kullanıcı tanımlı xml Serialization varsa, bu tür örnekleri bir xml veri türü için açıkça artığını. Yazdığınız bir clr kullanıcı tanımlı xml seri hale getirme hakkında daha fazla bilgi için bkz: clr veritabanı nesneleri xml Serialization.

Boşlukları yazılan XML'de işleme

De SQL Server, beyaz boşluk içinde öğe içeriği yalnızca beyaz boşluk karakter veri biçimlendirme tarafından ayrılmış bir sıra içinde oluştuğunda anlamsız sayılır, başlamak ya da bitirmek gibi etiketler ve değil entitized. (cdata bölümleri dikkate alınmaz.) Bu işleme beyaz boşluk işleme, ne kadar boşluk World Wide Web Consortium (W3C) tarafından yayımlanan xml 1.0 belirtimine açıklanan dan farklıdır. Çünkü xml çözümleyici SQL Serverxml 1.0 içinde tanımlanan dtd alt kümelerini yalnızca sınırlı sayıda tanır. Desteklenen sınırlı dtd alt kümeleri hakkında daha fazla bilgi için SQL Serverbakın CAST ve CONVERT (Transact-SQL).

Aşağıdakilerden biri doğruysa onu dize verileri XML'ye dönüştürdüğünde varsayılan olarak xml parser anlamsız beyaz boşluk atar:

  • The xml:spacebir öğe veya öncül öğelerini özniteliği tanımlı değil.

  • xml:spaceEtkin öğe özniteliği ya da öncül öğelerinden biri olan varsayılan değeri.

Örneğin:

declare @x xml
set @x = '<root>      <child/>     </root>'
select @x 

Sonuç şudur:

<root><child/></root>

Ancak bu davranışı değiştirebilirsiniz. DÖNÜŞTÜRME işleci ve onun isteğe bağlı bir xml dt örneğin boşluk korumak için kullanmak styleparametre değerinin 1. Örneğin:

SELECT CONVERT(xml, N'<root>      <child/>     </root>', 1)

Eğer styleparametresi ya da kullanılmaz veya değeri 0 olarak ayarlanır, anlamsız beyaz boşluk olmayan xml dt örneği dönüştürülmesi için korunur. DÖNÜŞTÜRME işleci kullanma hakkında daha fazla bilgi için ve kendi stylexml dt örnekleri, dize verileri dönüştürürken parametre bakın CAST ve CONVERT (Transact-SQL).

Örnek: yazılı xml bir dize değeri artığını ve bir sütun atayın

Aşağıdaki örnek bir xml parçası içeren bir dize değişkenine casts xml verileri yazın ve ardından içinde depolar xml sütun türü:

CREATE TABLE T(c1 int primary key, c2 xml)
go
DECLARE  @s varchar(100)
SET @s = '<Cust><Fname>Andrew</Fname><Lname>Fuller</Lname></Cust>' 

Aşağıdaki ekleme işlemi için bir dizeden örtülü olarak dönüştürür xml türü:

INSERT INTO T VALUES (3, @s) 

Açıkça cast() dize olabilir xml türü:

INSERT INTO T VALUES (3, cast (@s as xml))

Veya convert(), aşağıda gösterildiği gibi kullanabilirsiniz:

INSERT INTO T VALUES (3, convert (xml, @s)) 

Örnek: yazılı xml bir dize dönüştürmek ve bir değişkene atar

Aşağıdaki örnek, bir dize dönüştürülür xml yazın ve bir değişkene atanan xml veri türü:

declare @x xml
declare  @s varchar(100)
SET @s = '<Cust><Fname>Andrew</Fname><Lname>Fuller</Lname></Cust>' 
set @x =convert (xml, @s)
select @x

select deyimi, for xml yan tümcesi ile kullanma

for xml yan tümcesi, sonuç xml olarak döndürmek için bir select deyimi kullanabilirsiniz. Örneğin:

DECLARE @xmlDoc xml
SET @xmlDoc = (SELECT Column1, Column2
               FROM   Table1, Table2
               WHERE   Some condition
               FOR XML AUTO)
 ...

select deyimi sonra atama sırasında ayrıştırılır metinsel bir xml parçası döndürür xml veri türü değişkeni.

Ayrıca type yönergesi doğrudan for xml sorgu sonucu verir for xml yan tümcesi xml türü:

Declare @xmlDoc xml
SET @xmlDoc = (SELECT ProductModelID, Name
               FROM   Production.ProductModel
               WHERE  ProductModelID=19
               FOR XML AUTO, TYPE)
SELECT @xmlDoc

Sonuç şudur:

<Production.ProductModel ProductModelID="19" Name="Mountain-100" />...

Aşağıdaki örnekte, yazılı xml for xml sorgu sonucu içine eklenir bir xml sütun türü:

CREATE TABLE T1 (c1 int, c2 xml)
go
INSERT T1(c1, c2)
SELECT 1, (SELECT ProductModelID, Name
           FROM Production.ProductModel
           WHERE ProductModelID=19
           FOR XML AUTO, TYPE)
SELECT * FROM T1
go

for xml hakkında daha fazla bilgi için bkz: xml (SQL Server).

[!NOT]

SQL Serverdöner xmlveri türü örnekleri farklı sunucu yapıları sonucu istemciye type yönergesi kullanan for xml sorguları gibi ya da nerede xmlveri türü xml sql sütunlar, değişkenler dönüp çıkış parametreleri için kullanılır. İstemci uygulama kodu, ado.AĞ sağlayıcısı ister bu xmlveri türü bilgileri ikili bir sunucudan kodlama gönderilemez. Ancak, for xml türü yönergesi kullanıyorsanız, xml verilerini dize türünde döndürür. Her durumda, istemci sağlayıcısı her zaman XML form ele almak mümkün olacaktır.

Sabit atamaları kullanma

Dize sabiti örneği burada kullanılabilir xml veri türü bekleniyor. Bu xml dizesine zımni bir döküm aynıdır. Örneğin:

DECLARE @xmlDoc xml
SET @xmlDoc = '<Cust><Fname>Andrew</Fname><Lname>Fuller</Lname></Cust>' 
-- Or
SET @xmlDoc = N'<?xml version="1.0" encoding="ucs-2"?><doc/>'

Önceki örnek örtülü olarak dize dönüştürür xml verileri yazın ve atar bir xml türü değişkeni.

Aşağıdaki örnek, sabit bir katara ekler bir xml sütun türü:

CREATE TABLE T(c1 int primary key, c2 xml)
INSERT INTO T VALUES (3, '<Cust><Fname>Andrew</Fname><Lname>Fuller</Lname></Cust>') 

[!NOT]

Yazılı xml for xml belirtilen şema karşı doğrulanır. Daha fazla bilgi için, bkz. Yazılı xml yazılmamış xml karşılaştırın.

Bulk Load kullanma

Gelişmiş openrowset (Transact-sql) işlevsellik sağlar, toplu yükleme xml belgelerini veritabanında. Yük xml örneklerini dosyalarıyla toplu xml veritabanındaki sütunları yazın. Çalışma örnekleri için bkz: Toplu alma ve verme xml belgelerinin (SQL Server) örnekleri. xml belgeleri yükleme hakkında daha fazla bilgi için bkz: Yük xml verileri.

Bu Bölümde

Konu

Açıklama

Alma ve sorgu xml verileri

Veritabanlarında depolandığında korunmaz xml örnekleri bölümlerini açıklar.

Ayrıca bkz.

Kavramlar

Yazılı xml yazılmamış xml karşılaştırın

xml veri değişikliği dili (xml dml)

DEL - Implementing XML in SQL Server

Sample XML Applications and Data

Diğer Kaynaklar

XML veri türü yöntemleri