Aracılığıyla paylaş


Örnek: Çalışan bilgileri alınıyor.

Bu örnekte, çalışan NUMARASı ve her çalışan için çalışan adlarını alır.Çalışan alınabilir AdventureWorks veritabanındaki employeeID tablo.Çalışan adları, ilgili kişi elde edilebilir tablo.Ilgili kişi kimliği sütun, tabloları birleştirmek için kullanılabilir.

Aşağıdaki gösterildiği gibi XML oluşturmak IÇIN XML AÇıK dönüştürme istediğinizi varsayalım:

<Employee EmpID="1" >
  <Name FName="Guy" LName="Gilbert" />
</Employee>
...

Hiyerarşi içinde iki düzeyde olduğundan, iki SELECT sorgularını yazma ve UNION ALL geçerli.Bu değerleri alır ilk sorguyu, <Employee> öğe ve öznitelikleri. Sorgu 1 olarak atar. Etiket <Employee> öğe ve olarak NULL değeriÜst, çünkü en üst düzey öğe.

SELECT 1    as Tag,
       NULL as Parent,
       EmployeeID as [Employee!1!EmpID],
       NULL       as [Name!2!FName],
       NULL       as [Name!2!LName]
FROM   HumanResources.Employee E, Person.Contact C
WHERE  E.ContactID = C.ContactID

Bu ikinci sorgusudur.Bu değerleri alır <Name> Öğe. Bunu, 2 olarak atar Etiket <Name> öğe ve 1 değeriÜst <Employee> üst olarak tanımlamak için etiket değeri.

SELECT 2 as Tag,
       1 as Parent,
       EmployeeID,
       FirstName, 
       LastName 
FROM   HumanResources.Employee E, Person.Contact C
WHERE  E.ContactID = C.ContactID

Bu sorguları UNION ALL ile birleştirmek IÇIN XML AÇıK olarak uygulanır ve gerekli ORDER BY yan tümce belirtin.Böylece adı NULL değerlerini ilk görünür satır kümesi, ÇalışanNo önce ve sonra ada göre sıralamanız gerekir.FOR XML yan tümce olmayan aşağıdaki sorgu yürütülerek, Evrensel gördüğünüz tablo oluşturulur.

Bu son sorgudur:

SELECT 1    as Tag,
       NULL as Parent,
       EmployeeID as [Employee!1!EmpID],
       NULL       as [Name!2!FName],
       NULL       as [Name!2!LName]
FROM   HumanResources.Employee E, Person.Contact C
WHERE  E.ContactID = C.ContactID
UNION ALL
SELECT 2 as Tag,
       1 as Parent,
       EmployeeID,
       FirstName, 
       LastName 
FROM   HumanResources.Employee E, Person.Contact C
WHERE  E.ContactID = C.ContactID
ORDER BY [Employee!1!EmpID],[Name!2!FName]
FOR XML EXPLICIT

Bu kısmi kaynaklanır:

<Employee EmpID="1">
  <Name FName="Guy" LName="Gilbert" />
</Employee>
<Employee EmpID="2">
  <Name FName="Kevin" LName="Brown" />
</Employee>
...

Sütun adları, ilk SELECT'de bir sonuç kümesi belirtir.Bu adlar, iki sütun grubu oluşturur.Sahip grubu Etiket değeri 1, sütun adı içinde çalışan bir öğe ve öznitelik olarak EmpID olarak tanımlar.Sütun grubu etiket değeri 2 sütun ve tanımlar <Name> öğe ve FName ve LName öznitelikleri olarak.

Aşağıdaki tablo, sorgu tarafından oluşturulmuş kısmi satır kümesi kümesi gösterir:

Tag Parent  Employee!1!EmpID Name!2!FName Name!2!LName
----------- ----------- ---------------- -------------------
1    NULL     1                NULL          NULL
2     1       1                Guy           Gilbert
1    NULL     2                NULL          NULL
2     1       2                Kevin         Brown
1    NULL     3                NULL          NULL
2     1       3                Roberto       Tamburello 
...

Evrensel bir tablodaki satırların ortaya çıkan XML ağacı oluşturmak için nasıl işleneceğini budur:

Ilk satırı belirtir. Etiket 1 değeri.Bu nedenle, sahip sütununu grubu Etiket 1 değeri tanımlanır, çalışan! 1! EmpID.Bu sütun, çalışan öğe adı olarak tanımlar.Bir <Employee> öğe EmpID özniteliklere sahip sonra oluşturulur. Karşılık gelen sütun değerleri için bu öznitelikleri atanır.

Ikinci satır sahip Etiket 2 değeri.Bu nedenle, sahip sütununu grubu Etiket değeri 2, adı sütun adı! 2! FName, ad! 2! LName, tanımlanır.Bu sütun adları, ad öğe adı tanımlar.C <Name> öğe FName ve LName özniteliklere sahip oluşturulur. Karşılık gelen sütun değerleri, daha sonra bu öznitelikleri atanır.Bu satır 1'olarak tanımlar. Üst.Bu öğe alt önceki için eklenir. <Employee> Öğe.

Bu işlem, satır kümesi kümesi satır kümesi kümesi geri kalanı için yinelenir.Evrensel satırları sıralama önemi not tablo IÇIN XML AÇıK de siparişindeki satır kümesi kümesi işlemek ve istediğiniz XML oluştur.

See Also

Reference