1. Anasayfa
  2. SQL Server

T-SQL ile XML Parse İşlemi Nasıl Yapılır?


0

Bu makalemde SQL Query ile XML verileri nasıl okuyabileceğimizi ve bu işlemi procedure lerimizde nasıl kullanacağımızı göstereceğim.

Öncelikle bu işlemlerimiz için kullanacağımız örnek bir XML şablonu hazırlayalım.

C# ile bir xml dokümanı nasıl oluşturulur, Oluşturduğumuz xml dokümanımıza, XmlNode ve XmlAttribute lar nasıl eklenir hakkındaki bilgileri “XML” kategorisi altındaki makalelerimde bulabilirsiniz.

Burada oluşturulmuş bir XML in tabiriyle T-Sql ile “xml-parse” işlemini anlatmaya çalışacağım.

Şimdi hazır olan XML imiz aşağıdaki gibi olsun:


Resim-1

Çok karışık bir xml hazırlamadım çünkü asıl amacımızın SQL tarafında xml-parsing işlemi olduğunu hatırlatmak isterim J

SQL de bu işlem için kullanacağımız hazır fonksiyonlar vardır.

Bunlar :

  • sp_xml_preparedocument
  • sp_xml_removedocument

Bunlardan ilki , yani “sp_xml_preparedocument” bizim XML dokümanımızı alır ve output olarak kullanabileceğimiz bir formatta veriye dönüştürür.

sp_xml_ removedocument” ise, bir önceki metotta hazırlamış olduğumuz dokümanımızı artık işimiz bittiği için kaldırmamızı yarıyor.

SQL de xml-parse için hazırlanmış şemamız aşağıdaki gibidir.


Resim-2

Görüldüğü gibi bir XML dokümanının, sql tablo haline gelebilmesi için bazı aşamalardan geçmesi gerekir.

Bunlardan ilki, yukarda bahsettiğimiz “sp_xml_preparedocument” fonksiyonumuzdur. Bu fonksyon bize ayrıştırılabilir bir veri döndürecektir.

İkinci işlem olarak “OPENXML” fonksyonudur. Bu fonksyonda, “sp_xml_preparedocument” ile hazırladığımız veriyi tablo ya aktaracak yapımızdır.

Üçüncü ve son işlemimiz ise, “OPENXML” ile tablo haline dönüştüreceğimiz veriden, hangi element leri kullanmak istediğimizi belirleyen bir SELECT komutudur. (Sonuçta xml deki hangi node ları kullanacağımızı belirtmemiz gerekir).

Evet, xml-parse süreç akışımızı belirledikten sonra, uygulamamızı hazır hale getirelim.

——————————————————————————————————————

— XML verimizi bir değişkene atarız

DECLARE @xml varchar(max);

SET @xml =
(‘<?xml version=”1.0″ encoding=”utf-8″?>

<ROOT>

<Ogrenci recid=”12″ gsmno=”5050000000″ />

<Ogrenci recid=”43″ gsmno=”5320000000″ />

</ROOT>’);

 

— hazırlayacağımız dökümanı belirtiriz

DECLARE @idoc int;

 

— dökümanımızı hazırlarız

EXEC
sp_xml_preparedocument
@idoc OUTPUT, @xml;

 

— OPENXML kullanarak select sorgusu çekeriz ve #RESULT adlı temp tablomuza kayıt ederiz

SELECT [recid] as OgrenciNo, [gsmno] as [GSM No]

INTO #RESULT

FROM
OPENXML (@idoc,
‘/ROOT/Ogrenci’)

WITH (    gsmno varchar(50)
‘@gsmno’,

recid bigint
‘@recid’
);

 

— tablomuzu kontrol ederiz

select
*
from #RESULT

 

— oluıturduðumuz dökümanı kaldırırız

EXEC
sp_xml_removedocument
@idoc;

 

—————————————————————————————————————–

 

select
*
from #RESULT sorgusu sonucu aşağıdaki gibi olacaktır.

 


Resim-3

İlk başta tanımladığımız xml dokümanını bu şekilde tablomuza başarılı bir şekilde aktarmış olduk.

Bu yaptığımız işlemi Procedure ve Function larda kolaylıkla kullanabilmekteyiz.

Procedure için input parametremiz :

—————————————–

CREATE PROCEDURE Xml_Parse

@xml text

AS

 

 BEGIN

  — xml parsing işlemi …

 END

—————————————–

Şeklinde olabilir.

Xml-Parse, SQL de oldukça işimize yarayacak bir işlemdir.

Kullanmak isteyen arkadaşlar için umarım faydalı olmuştur.

Bu konuyla ilgili sorularınızı  alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.

Referanslar

www.mshowto.org

Bu İçeriğe Tepkin Ne Oldu?
  • 3
    harika_
    Harika!!
  • 0
    be_enmedim
    Beğenmedim
  • 0
    _ok_iyi
    Çok iyi
  • 0
    sevdim_
    Sevdim!
  • 0
    bilemedim_
    Bilemedim!
  • 0
    olmad_
    Olmadı!
  • 0
    k_zd_m_
    Kızdım!

1986 Aksaray Doğumluyum, Yıldız Teknik Üniversitesi Matematik bölümünden 2010 yılında mezun oldum ve yaklaşık 4 senedir IT sektöründe Yazılım ve Sistem uzmanı olarak çalışmaktayım. Bu süre içerisinde birçok Windows ve Web uygulamaları geliştirmiş olup, SQL Server konusunda oldukça tecrübeliyim. MCP, MCTC, MCPD, MCITP, MCSA ve CCNA sahip olduğum sertifikalardır.

Yazarın Profili

Bültenimize Katılın

Tıklayın, üyemiz olun ve yeni güncellemelerden haberdar olan ilk kişi siz olun.

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir