Makale Özeti

Dynamic Ax ortamında XML belgesi yaratma ve okuma işlemleri son derece kolaydır.

Makale

Axapta XML Dosya oluşturma

Axapta’ da XML Dosya oluşturma

 

eXtensible Markup Language(XML); Axapta kapsamında genellikle kurumlararası entegrasyon uygulamalarında metin bazlı veri  transferi işlemleri için kullanılan belge tipleridir.

 

Kısaca  XML yapısına bakacak olursak; Temelde XML dosyaları görsel olarak biçimlendirilmiş sıralı dosya formatında bulunan metin dosyalarıdır. Bir XML belgesi düğümler hiyerarşi'sinden oluşur ve HTML yapısına  çok benzer bir yapısı vardır. Bir XML belgesini normal metin belgesinden ayıran belli kurallara sahip işaretler içermesinir.

 

Örnek bir XML  dosyasına bakacak olursak;

 

<note>

<appl> Axapta</appl>

<version>3.0</version>

<body>This is a sipmle XML file </body>

</note>

 

Gerek .Net ortamında gerekse Axapta ortamında kod yazıyor olalım, bir XML belgesini okumak yada yazmak için ortak kullanılan bazı nesneleri tanıyalım:

 

XmlDocument: Bir XML belgesinden veri okumak, değiştirmek, verilerin konumlarını bulmak için kullandığımız nesnedir. XML belgesinin kök nesnesidir.

XMLElement: XML belgesinde bulunan elemanları temsil eder.

XmlNode: Xml belgesinde bulunan düğümleri temsil eder.

XmlAttribute :Xml belgesinde bulunan bir düğüme ait nitelik bilgilerini temsil eder.

 

Dynamic Ax  ortamında XML belgesi yaratma ve okuma işlemleri son derece kolaydır. Yalnız burada unutulmaması gereken konu case sensitive (büyük ve küçük harfe duyarlı) çalışılması gerektiğidir.

 

Makaleden daha çok yaralanabilmeniz için sitemizde XML hakkında yazılmış olan makaleleri okumanızı tavsiye ederim.

 

 

Axaptada XML ile ilgili yazılmış olan sınıfları Application Object Tree’de Classes grubunda bulabilirsiniz.

 

 

 

 

X++ ile  XML dosyası nasıl oluşturacağımızı görelim.

 

static void Create_XMLExample(args a)

{

     XMLDocument                     objDOM ;

     XMLElement                        elNode ;

     XMLText                                          textNode;

 

     XMLNode                            pNode;

     XMLNode                            oNode;

     XMLNode                            aNode;

     XMLNode                            nNode;

     XMLNode                            kNode;

     XMLNode                            lNode;

     XMLNode                            topNode;

     XMLProcessingInstruction    pi;

     XmlAttribute                                     idAttribute;

     XmlAttribute                                     descriptionAttribute;

     InventTable                                      artikelStamm;

     ;

 

 

 

 

try

     {

 

         // XML Document nesnesi oluşturuluyor.

         objDOM      = new XMLDocument();

         // XML İşlem konumutu satırı oluşturuluyor.

         pi = objDOM.createProcessingInstruction("xml", "version=\"1.0\" standalone=\"yes\" ");

         // Üst ana düğüm.

         // Kullanıcı sistemine XML dökümanı yüklenir.

         objDOM.loadXML('<XML></XML>');

         topNode= objDOM.documentElement();

         objDOM.insertBefore(pi,topNode.com() ) ;

         // InventTable tablosundan belirli  kriterlere göre seçim işlemi yapılıyor.

         while select * from artikelStamm Where artikelStamm.ItemId=='ProductId'

         {

            // XML alt düğümü (Child Node)

            pNode       = objDOM.documentElement();

            elNode      = objDOM.createElement('Aggregation');

            oNode       = pNode.appendChild(elNode);

 

            // XML elemanı (Metin doyaları için örnek içerik)

            nNode       = objDOM.createElement('productId');

            lNode       = oNode.appendChild(nNode);

            // InventTable.ItemId alanı

            textNode   = objDOM.createTextNode(ArtikelStamm.ItemId);

            kNode       = nNode.appendChild(textNode);

 

            // XML elemanı (Sayısal doyaları için örnek içerik)

            nNode       = objDOM.createElement('startamount');

            lNode       = oNode.appendChild(nNode);

            // InventTable.StartAmount alanı

            textNode   = objDOM.createTextNode(int2Str(ArtikelStamm.Height));

            kNode       = nNode.appendChild(textNode);

 

            // XML elemanı (XML niteliği attribute örnek içerik)

            nNode       = objDOM.createElement('minduration');

            idAttribute = objDOM.createAttribute('id');

            idAttribute.value(strfmt('%1', int2Str(ArtikelStamm.Height)));

            kNode       = nNode.attributes().setNamedItem(idAttribute);

            // InventTable.ItemId alanı

            descriptionAttribute = objDOM.createAttribute('description');

            descriptionAttribute.value(ArtikelStamm.ItemId);

            kNode=nNode.attributes().setNamedItem(descriptionAttribute);

            lNode       = oNode.appendChild(nNode);

 

         } // InventTable tablosu seçim işleminin sonu.

 

         // Döküman kaydediliyor. 

         objDOM.save('C:/XMLExample.xml');

     }

     catch

     {

        error('Exception caught');

     }

 

Volkan Acar

Volkan.vacar@gmail.com