XML örnekleri oluşturma

Olarak açıklananXML veri türü, XML örneği bir SQL Serververitabanını. saklayabilirsiniz Bu bölümde, XML örneği oluşturmak açıklamaktadır.

InSQL Server, XML örnekleri aşağıdaki şekillerde oluşturabilirsiniz:

  • Çevrim dize örneği yazın.

  • SELECT deyim FOR XML yan tümcesiyle birlikte kullanıyor.

  • Sabit atama kullanıyor.

  • Toplu yükleme kullanma.

dize türüne çevrim ve ikili örnekleri

You can parse any of the SQL Server string data types, such as [n][var]char, [n]text, varbinary,and image, into the xml data type by casting (CAST) or converting (CONVERT) the string to the xml data type.Türlenmemiş XML, iyi biçimlendirilmiş onaylamak için denetlenir.Varsa, bir şema ile ilişkiliXMLtürü, doğrulama de gerçekleştirilir.Daha fazla bilgi için bkz: Klavyeyle yazılan XML Untyped XML'YE karşılaştırılması.

XML belgeleri kodlanmış farklı kodlama ile (örneğin, UTF-8, UTF-16, windows-1252).XML belge kodlaması ile dize ve ikili kaynak türleri nasıl etkileşimde bulunduğunu ve ayrıştırıcı nasıl davranacağını kurallarını açıklar.

Bu yananvarchar varsayar bir iki baytlık unicode UTF-16 veya UCS-2 gibi kodlama, XML ayrýþtýrýcýsý kabul dize XML iki baytlık Unicode olarak kodlanmış olarak değeri belge veya parça. Bu XML belgesinde iki baytlık Unicode olarak kodlanmış gerektiğini de kaynak veri türüyle uyumlu olacak şekilde kodlama demektir.XML UTF-16 kodlu belge UTF-16 bayt düzeni işareti (BOM) sahip olabilir ancak bu gerekli değildir, kaynak türü bağlamında kolaylaştırır, çünkü, yalnızca iki baytlık Unicode olabilir açık belge kodlanmış.

İçeriğini birvarchar dize bir tek baytlık kodlanmış XML belge/parçası kabul edilir XML Ayrıştırıcı.Bu yanavarchar kaynak dizesi ilişkili bir kod sayfa vardır, ayrıştırıcı bir ürün Reçetesi bir XML örnek varsa, hiçbir açık kodlama XML olarak belirtilmişse, kodlama için bu kod sayfasını kullanır veya bir kodlama bildirimi, ürün Reçetesi veya bildirim kod sayfa ile tutarlı olması gerekir, aksi halde çözümleyici bildirir bir hata.

İçeriğivarbinary geçirilen doğrudan XML Ayrıştırıcı. için codepoint akışı olarak kabul edilir Bu nedenle, XML belgesini veya parça ürün Reçetesini veya diğer kodlama bilgileri satır sağlaması gerekir.Çözümleyici yalnızca kodlama belirlemek için akış sırasında görünür.Bunun anlamı, UTF-16 ÜR sağlamak için XML gereksinimlerini UTF-16 kodlu ve örnek ürün Reçetesi ve bir kodlama bildirim olmaksızın UTF-8 olarak yorumlanır.

Kodlama XML belgesinin değil bilinen önceden ve verileri dize veya yerine XML verilerinin XML çevrim önce ikili veri olarak gönderilir, önerilir verileri olarak değerlendirmek içinvarbinary.Örneğin, veri OpenRowset() kullanarak bir XML dosyasından okurken, bir veri olarak okunacak biçimde belirtmeniz gerekir birvarbinary(max) value:

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

SQL Server Dahili XML, UTF-16 kodlamasını kullanan bir verimli ikili gösterim temsil eder.Kullanıcı tarafından sağlanan kodlama korunmaz, ancak çözümleme işlemi sırasında kabul edilir.

Çevrim CLR kullanıcı tanımlı türler yazın

CLR kullanıcı tanımlı türü bir XML Serialization varsa, bu tür örnekleri bir XML veri türü için açıkça çevirebilirsiniz.Daha fazla bilgi için kullanıcı tanımlı bir CLR XML dizileştirme hakkında yazılan, bkz:CLR veritabanı Objects'in XML Serialization.

Typed XML işleme boşluk

InSQL Server, boşluk öğe içeriği içinde beyaz alanı-yalnızca karakter veri biçimlendirme ile ayrılmış bir sıra içinde gerçekleşir, anlamsız değerlendirilir, gibi başlangıç veya bitiş etiketlerini ve değil entitized.(CDATA kısımları göz ardı) Bu işleme boşluk işleme nasıl boşluk World Wide Web Consortium (W3C) tarafından yayımlanan XML 1.0 belirtiminde tanımlanan gelen farklıdır. Bu olduğundan, XML ayrýþtýrýcýsýSQL ServerXML 1. 0'da tanımlandığı gibi yalnızca sınırlı sayıda DTD alt kümelerini tanıdığı.Desteklenen sınırlı DTD alt hakkında daha fazla bilgiSQL ServerBkz:CAST ve CONVERT (Transact-SQL).

Aşağıdakilerden biri doğruysa dize verileri XML biçimine dönüştürür, varsayılan olarak, XML ayrýþtýrýcýsý anlamsız boşluk atar:

  • The xml:spaceözniteliği tanımlanmamış bir öğe veya üst alt öğeleri.

  • The xml:space attribute in effect on an element, or one of its ancestor elements, has the value of default.

Örneğin,:

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

Bu sonucu oluşur:

<root><child/></root>

Ancak, bu davranışı değiştirebilirsiniz.Boşluk bir xml DT örneğin korumak için çevir işleç ve isteğe bağlı, kullanmaStil parametre küme 1 değerine.Örneğin:

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

,Stil parametre kullanılmaz veya değerini 0 olarak ayarlanmışsa, DT xml örnek. dönüşüm için anlamsız boşluk korunur CONVERT işleç kullanma hakkında daha fazla bilgi için veStil parametre dize verileri xml DT örneklerine dönüştürürken görmek CAST ve CONVERT (Transact-SQL).

ÖRNEK: Bir dize değeri yazılan bir XML atama ve onu atamak için bir sütun

İçin bir XML parçası içeren bir dize değişkeni aşağıdaki örnekte çevirirXML verileri yazın ve sonra xml Türü sütununda depolar:

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şlemini dolaylı olarak dönüştürür bir dize içinXML type:

INSERT INTO T VALUES (3, @s) 

Dizesi olarak açıkça cast() içinXML type:

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

Ya da convert(), aşağıdaki gibi kullanabilirsiniz:

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

ÖRNEK: Bir dize için yazılan bir xml dönüştürme ve yeniden atamak için bir değişken

Aşağıdaki örnekte, bir dize dönüştürülürXML tür xml veri türünün bir değişkene atanı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 deyim FOR XML ile kullanarak yan tümce

Bir deyim içinde FOR XML yan tümce, sonuçlar XML olarak döndürmek için kullanabilirsiniz.Örneğin:

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

The deyim döndürür, sonra atamaya sırasında ayrıştırılır metinsel bir XML parçasıXML değişken. veri türü

AyrıcaTür yönergesi doğrudan sorgu sonucu xml türü için XML döndüren FOR XML yan tümcesinde:

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

Bu sonucu oluşur:

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

Aşağıdaki örnekte, yazılıXML FOR XML sorgusunun sonucu xml türü sütun eklenir:

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:FOR XML kullanan XML oluşturma.

Not

SQL Serververirxmlveri türü için XML türü yönergesini kullanan sorgular gibi veya burada örnekler istemciye farklı yapıları,xmlveri türü XML SQL sütunlar, değişkenler ve geri dönmek için kullanılır çıktı parametrelerini.ADO.NET sağlayıcı istemci uygulama kodu, ister buxmlveri türü bilgilerini gönderilmesini ikili kodlama sunucu.Ancak, FOR XML türü yönergesi kullanıyorsanız, XML verilerini bir dize türünde döndürür.Her durumda, istemci sağlayıcı her zaman XML ya da formu işlemek mümkün olacaktır.

Sabit atama kullanma

Dize sabit örnek burada kullanılabilirXML veri türü beklediği.Bu örtülü bir CAST aynıdır dize XML.Ö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/>'

Dolaylı olarak önceki örnekte dönüştürür dize içinXML verileri yazın ve bir xml türü değişkenine atar.

Aþaðýdaki örnek sabit bir dizeye ekler birXML türü sütun:

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, XML belirtilen şemaya göre doğrulanır.Daha fazla bilgi için bkz: Klavyeyle yazılan XML Untyped XML'YE karşılaştırılması.

toplu yükleme kullanma

GelişmişOPENROWSET (Transact-SQL) işlev için veritabanını. toplu yükleme XML belgelerinde sağlar Yük XML dosyalarına örneklerden topluXML veritabanını. türü sütun Çalışma örnekleri için bkz:Alma ve XML belgeleri verme toplu örnekleri.XML belgeleri, yükleme hakkında daha fazla bilgi için bkz:XML verisi yükleniyor.

Bu Bölümde

Konu

Açıklama

XML verisi alınıyor

Veritabanında depolandığında korunmaz XML örneği bölümlerini açıklar.