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: