.NET FRAMEWORK
Namespace Oluşturmak
ve Kurmak XMLTEXTWRİTER CLASS
XMLTEXTREADER
STİL KONTROLÜ
Object/Relational
Mapping(O/RM)
|
XMLTextReader
Daha önceki yazımızda XMLTextWriter Class
ından ve kullanımından bahsetmiştik. Bu yazımızda ise XMLTextReader
Class'ından bahsetmek istiyorum. XMLTextReader sınıfı sayesinde kod
içersinden hızlı, non-cached ve forward-only erişim sağlamamız mümkün.
Sınıfın hiyerarşik durumuna bakacak olursak:
System.Object
System.Xml.XmlReader
System.Xml.XmlTextReader
şeklinde bir yapı ile karşılaşırız. Sınıfın .Net dillerindeki
tanımlanma şekli ise şöyledir:
[Visual Basic]
Public Class
XmlTextReader
Inherits XmlReader
Implements IXmlLineInfo
[C#]
public class XmlTextReader :
XmlReader, IXmlLineInfo
[C++]
public __gc class XmlTextReader :
public XmlReader, IXmlLineInfo
[JScript]
public class XmlTextReader extends
XmlReader implements
IXmlLineInfo
XMLTextReader sınıfı belirtilen dokuman
içersinde her seferinde bir düğüm olmak üzere yukarıdan aşağıya bir döngü
ile ilerler. Bir sonraki düğüme geçmek için XMLTextReader.Read
metodunu kullanır. Bu metod şayet hala okunacak düğüm varsa yani EOF
durum sözonusu değilse true, okunacak düğüm kalmadığında ise False
değerini verir.
Peki düğümden kastımız nedir. Bu konuyu
daha önce XML konulu birçok yazımızda açıklamıştık. XML dokuman içindeki
açıklamalar, boşlular, başlama imleri, bitiş imleri, içerik ve hatta
dosyanın en başında bulunan XML tanımlama imleri bile birer
düğümdür.Düğümlerin ne olduğunu daha iyi kavramak için bir XML dosyası
hazırlayalım ve düğümleri bir liste halinde ekrana getirelim.
<?xml version="1.0" ?>
<UrunListesi>
<Urun ID="1" Name="Televizyon">
<Fiyat>100 YTL</Fiyat>
<Urun>
<Urun ID="2" Name="Müzik Seti">
<Fiyat>50 YTL</Fiyat>
<Urun>
<Urun ID="3" Name="Radyo">
<Fiyat>20 YTL</Fiyat>
<Urun>
</UrunListesi>
Dim MyFileStream As New
FileStream("C:\Documents and Settings\All Users\Documents\urun.xml",
FileMode.Open)
Dim MyXMLReader As XmlTextReader
Do While MyXMLReader.Read()
LblDurum.Text &= "<b>Tip:</b> " & MyXMLReader.NodeType.ToString &
"<br>"
If MyXMLReader.Name <> "" Then
LblDurum.Text &= "<b>İsim:</b> " & MyXMLReader.Name & "<br>"
End If
If MyXMLReader.Value <> "" Then
LblDurum.Text &= "<b>Değer:</b>" & MyXMLReader.Value & "<br>"
End If
If MyXMLReader.AttributeCount > 0 Then
LblDurum.Text &= "<b>Nitelik:</b> "
Dim i As Integer
For i = 0 To MyXMLReader.AttributeCount() - 1
LblDurum.Text &= " " & MyXMLReader.GetAttribute(i) & " "
Next
LblDurum.Text &= "<br>"
End If
LblDurum.Text &= "<br>"
Loop
XMlTextreader ın diğer özelliklerine
de göz gezdirecek olursak :
- XMLTextReader birçok özellik ve metod destekler ancak bunlar yukarıda
gördüğünüz işlemden çok da fazla detaya inmezler sadece XMLTextReader ın
esnekliğini artırmaya yararlar.
- ReadString, ReadInnerXML ve ReadOutherXMl metodlarını kullanarak bir
XML dokumanın istediğiniz kısmını bir recordset e aktarır gibi
okuyabilirsiniz.
Bazı Özellikleri
|
AttributeCount |
Her bir node daki nitelik sayısını
getirir. |
|
Encoding |
Dokumanın encoding bilgisini getirir |
|
EOF |
Okuma esnasında dokumanın sonuna gelip
gelmediğini kontrol eder |
|
IsDefault |
Seçili Node un defaul DTD sini verir |
|
LineNumber |
Satır numarasını verir |
|
LinePosition |
Satır konumunu verir |
|
LocalName |
Seçili Node un local ismini verir |
|
Name |
Seçili Node un ismini verir |
|