Dynamics AX 3.0’ 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' e ve 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.
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ıyacak olursak :
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 elementleri 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.
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('
         topNode= objDOM.documentElement();
         objDOM.insertBefore(pi,topNode.com() ) ;
         // InventTable tablosundan belli 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 elemenı (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');
     }
Hiç yorum yok:
Yorum Gönder