Facebook RSS Feed
 

.NET Micro Framework: XML Oluşturmak

-XML, farklı platform ve cihazların belirli kurallar dahilinde veri depolamasını ve bu verisetinin kolaylıkla transfer edilerek yorumlanmasını sağlar. Mikrodenetleyici üzerinde XML oluşturmak ile masaüstü uygulamalarda XML oluşturmak hemen hemen aynı yöntemi kullanır. Hafıza üzerinde XML veriseti oluşturup bunu debug mesajı olarak bilgisayara gönderen bir uygulama üzerinde duracağız.

XML Writer ile aşağıda yer alan XML yapısını oluşturulup StreamWriter yada MemoryStream ile depolama / transfer işlemlerini gerçekleştirmek mümkündür. XML yapısına özetle bakacak olursak, ilk satırda version ve encoding özellikleri belirtilir. Sonrasında veriler (node'lar) ve özellikleri eklenir. Her bir node'un özellik isimleri ve bunların sıraları aynı olmalıdır.

<?xml version="1.0" encoding="utf-8"?>
<Veriseti>
    <Veri>
        <Ozellik1>Deger 1</Ozellik1>
        <Ozellik2>Deger 2</Ozellik2>
    </Veri>
    <Veri>
        <Ozellik1>Deger 3</Ozellik1>
        <Ozellik2>Deger 4</Ozellik2>
    </Veri>
</Veriseti>

XML Metodları

XML oluşturma metodlarının sık kullanılanlarını inceleyelim:

- WriteProcessingInstruction(): XML'in ilk satırında bulunması gereken decleration'ı yazar.
- WriteStartElement(): Node elementlerinin başlangıcını yazdırır. Örneğin: <Veri>
- WriteString(): XML içerisine istenilen değeri yazdırır. Ayrıca, \r\n karakterleri ile alt satıra geçer, \t karakteri ile tab boşluğu ekler.
- WriteEndElement(): Node elementini sonlandırır. Örneğin: </Veri>
- WriteComment(): XML içerisine <!-- ile başlayıp --> ile biten açıklama ekler.
- Flush(): XML'i stream içerisine yazdırır.
- Close(): XML yazıcısını kapatır.

Uygulama Kodları

Yukarıda gösterilen XML içeriğini oluşturup Visual Studio'ya debug mesajı olarak gönderen bir uygulama geliştireceğiz. Yeni bir Micro Framework Console Application oluşturalım. Proje referanslarına "System.IO.dll" (Memory stream oluşturmak için) ve "MFDpwsExtensions.dll" (XML yazıcıyı oluşturmak için) kütüphanelerini ekleyelim.

Öncelikle bir memory stream oluşturacağız ve sonrasında oluşturacağımız XML'i bu memory stream'e yazdıracağız. Program.cs dosyasının kodlarını inceleyelim:

using System;
using System.Threading;
using System.IO;
using System.Ext.Xml;
using Microsoft.SPOT;
 
namespace MFXMLOlusturmak
{
    public class Program
    {
        public static void Main()
        {
            //Oluşturacağımız XML'in saklanacağı bir Memory Stream oluşturalım:
            MemoryStream memoryStream = new MemoryStream();
 
            //XML yapısını oluşturacak ve verileri yazacak XML Writer instance'ı oluşturalım:
            XmlWriter xmlWriter = XmlWriter.Create(memoryStream);
 
            //XML Decleration satırını yazdıralım:
            xmlWriter.WriteProcessingInstruction("xml""version=\"1.0\" encoding=\"utf-8\"");
 
            //XML Elementlerini yazdıralım:
            xmlWriter.WriteString("\r\n\t");
            xmlWriter.WriteStartElement("Veriseti");
 
            xmlWriter.WriteString("\r\n\t");
            xmlWriter.WriteStartElement("Veri");
 
            xmlWriter.WriteString("\r\n\t\t");
            xmlWriter.WriteStartElement("Ozellik1");
            xmlWriter.WriteString("Deger 1");
            xmlWriter.WriteEndElement();
 
            xmlWriter.WriteString("\r\n\t\t");
            xmlWriter.WriteStartElement("Ozellik2");
            xmlWriter.WriteString("Deger 2");
            xmlWriter.WriteEndElement();
 
            xmlWriter.WriteString("\r\n\t");
            xmlWriter.WriteEndElement();
 
            xmlWriter.WriteString("\r\n\t");
            xmlWriter.WriteStartElement("Veri");
 
            xmlWriter.WriteString("\r\n\t\t");
            xmlWriter.WriteStartElement("Ozellik1");
            xmlWriter.WriteString("Deger 3");
            xmlWriter.WriteEndElement();
 
            xmlWriter.WriteString("\r\n\t\t");
            xmlWriter.WriteStartElement("Ozellik2");
            xmlWriter.WriteString("Deger 4");
            xmlWriter.WriteEndElement();
            
            xmlWriter.WriteString("\r\n\t");
            xmlWriter.WriteEndElement();
            xmlWriter.WriteString("\r\n");
            xmlWriter.WriteEndElement();
 
            //XML akışını sonlandıralım:
            xmlWriter.Flush();
            xmlWriter.Close();
 
            //Memory Stream'deki XML'i debug mesajı olarak yazdıralım:
            Debug.Print(new string(System.Text.UTF8Encoding.UTF8.GetChars(memoryStream.ToArray())));
 
            //Main Thread'i uyutalım:
            Thread.Sleep(Timeout.Infinite);
        }
    }
}

Uygulamayı çalıştırdığınızda Visual Studio Output yada Immediate Window'da oluşturduğumuz XML yapısını göreceksiniz. Debug mesajı yerine seri port yada başka bir iletişim protokolü ile veri transferi de yapılabilir. SD kart gibi bir depolama cihazına kayıt yapmak için yine benzer bir yöntem (StreamWriter) kullanılır.

XML dosyasının daha az yer kaplaması ve verinin daha hızlı oluşturulup transfer edilmesi için WriteString("\r\n...") satırlarını silebilirsiniz. Bu satırları XML'in daha rahat okunabilmesi için ekledik.

Uygulama kodlarını buradan indirebilirsiniz.




 
Hoşgeldiniz!
Son güncelleme: 25.12.2016
-
Yeni Teknik Yazılar
Latte Panda İncelemesi
Turta IoT HAT İncelemesi
USB Gamepad Kullanımı
GPIO Kullanımı
VEML6075 UV Sensör Kullan...
-
İlgili Gruplar
.NET MF ve Gadgeteer FB Grubu
İst. IoT & Wearables Meet-up
-
 

This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.Copyright © 1999 - 2017, Umut Erkal. Bu materyal, "Creative Commons Public Licence" ile sunulmuştur.
Kaynak göstererek ve ücretsiz olarak, aynı şartlar altında paylaşabilir ve kullanabilirsiniz. | Kullanım Sözleşmesi