Makale Özeti

Makalemizde Dynamics AX 3.0 bünyesinde XML belgeleri nasıl okuyacağımıza göz atacağız.

Makale

Makalemizde Dynamics AX 3.0  bünyesinde XML belgeleri nasıl okuyacağımıza göz atacağız.

 

“Dynamics AX ’da XML dosya oluşturma” makalemizin devamı yada  ters işlemi niteliğinde olan bu yazımızda aşağıdaki örnek XML belgesini okumaya çalışacağız.

 

<?xml version="1.0" standalone="yes" ?>

<XML -- 1. düğüm nesnesi

<Aggregation> --2.düğüm nesnesi

  <productId>15208-AD200</productId> --2. düğüm nesnesinin alt düğümü

  <startamount>0</startamount>  --2. düğüm nesnesinin alt düğümü

  <minduration id="0" description="15208-AD200" /> --2. düğüm nesnesinin attribute düğümü

</Aggregation>

</XML>

 

Kullanacağımız nesneleri tekrar hatırlayacak olursak.

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

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

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

XmlNodeList : XML belgesinde bulunan element e ailt değerlerin listesini verir.

XMLNamedNodeMap:XML belgesinde düğüme ait kesişim kümesini verir.  Genel kullanımı Attribute tipi düğümlerde nitelik değerlerini verir.

 

static void Read_XMLExample (Args _args)

{

    str             filename, nodeName,txtFile,strTxtRow;

    str             AttName;

    int             i,j,k;

    boolean         Valid;

    //---> XML nesneleri tanımlanıyor.

    XMLDocument     XMLdoc;

    XMLNode         rootNode, bodyNode,bodyNode1;

    XmlAttribute    AttNode;

    XMLNodeList     bodyLines,childLine;

    XMLNodeList     _xmlNodelist;

    XMLNamedNodeMap attrs;

    //<---

    ;

     //--->XML belgesi kullanıcı sistemine yükleniyor

    XMLdoc=new XMLDocument();

    XMLdoc.load("C:\\XMLExample.xml");

    //<---

    // 1. düğüm nesnesi.

    rootNode = xmldoc.documentElement();

    // 1.düğüm nesnesinin ismi.

    nodeName = rootNode.baseName();

     // 1. düğüm nesnesinin alt düğüm'leri var mı?

    if(rootNode.hasChildNodes())

    {

        // eğer 1. düğüm nesnesinin alt düğümleri varsa

        bodyLines = rootNode.childNodes();

        // ---> 1.düğüm boyunca dönüyoruz - başlangıç

        for(i = 0; i< bodyLines.length(); i++)

        {

            // 2. düğüm nesnesi.

            bodyNode = bodyLines.nextNode();

            // 2.düğüm nesnesinin ismi.

            strTxtRow = bodyNode.baseName();

            // 2. düğüm nesnesinin alt düğüm'leri var mı ?

            if(bodyNode.hasChildNodes())

            {

                childLine = bodyNode.childNodes();

                // ---> 2.düğüm boyunca dönülür-başlangıç

                for(j= 0; j<childLine.length(); j++)

                {

                    //2.düğüm nesnesinin alt düğümünü.

                    bodyNode1 = childLine.item(j);

                    //alt düğümün ismi

                    nodeName = bodyNode1.baseName();

                    strTxtRow += ': '+ nodeName;

                    // alt düğüm bir attribute nesnesi mi ?

                    // eğer bir attribute nesnesi ise değerler bir map içine alınır.

                    attrs=bodyNode1.attributes();

                    if (attrs.length()>0)

                    {

                        // attribute map'i üzerinde dönüyoruz.

                        for(k= 0;k< attrs.length();k++)

                        {

                            // alt düğüm ismi ve düğüm değeri.

                            strTxtRow +=': ' + attrs.item(k).baseName() +'-'+ attrs.item(k).text();

                        }

                    }

                    else

                    {

                         _xmlNodelist = bodyNode.selectNodes(nodeName);

                        // 2.düğüm listesi boyunca dönüyoruz.

                        for(k= 0;k< _xmlNodelist.length();k++)

                        {

                            // alt düğüm ismi ve düğüm değeri alınıyor.

                            strTxtRow += ': ' + _xmlNodelist.item(k).text();

                        }

                    }

 

                }//<---2.düğüm boyunca dönüyoruz-bitiş

            }

         }//<--- 1.düğüm boyunca dönüyoruz-bitiş

         // yazdır.

         print (strTxtRow);

         pause;

     }