Node.js XML Oluşturma ve Okuma

Node.js ile XML oluşturma ve XML okuma işlemi için kullanılan modül ile ilgili bilgiler yer alıyor.

Node.js XML oluşturma

Node.js ile platformlar arasında veri taşımak için genellikle JSON formatı kullanılır.

Ancak JSON formatını desteklemeyen platformlar için XML formatında dosya oluşturmak istenebilir.

Node.js ile XML formatında dosyalar oluşturmak için xmlbuilder, xml-writer hem okuma hem de oluşturma için xml2js kullanılabilir.

Modül temel olarak JSON formatını XML formatına çevirerek XML dosyası oluşturmaya imkan verir.

Modül paket yöneticisi ile indirilir.

npm install xml2js

Projeye dahil edilir.

const xml2js = require('xml2js');

JSON formatını XML formatına çevirmek için xml2js modülü içindeki builder nesnesine ait metotlar kullanılır.

'use strict';

const xml2js = require('xml2js');
const builder = new xml2js.Builder();

XML Nedir? yazısında örnek yapıyı JSON formatında oluşturalım.

let kisiler = {
  kisi: [{
    sira: '1',
    adi: 'Yusuf',
    soyadi: 'SEZER'
  }]
};

JSON formatını XML formatına çevirmek için builder nesnesine ait buildObject metodu kullanılır.

const xml = builder.buildObject(kisiler);

İşlem sonucunda metot dönüş değeri olarak XML formatında bir sonuç verecektir.

Sonuç fs modülü ile dosyaya yazdırılabilir.

'use strict';

const fs = require('fs');
const xml2js = require('xml2js');
const builder = new xml2js.Builder();

let kisiler = {
  kisi: [{
    sira: '1',
    adi: 'Yusuf',
    soyadi: 'SEZER'
  }]
};

const xml = builder.buildObject(kisiler);

fs.writeFile('kisiler1.xml', xml, 'utf-8', function (err, data) {

  if (err) throw err;

});

Modül içerisindeki builder nesnesi parametre olarak çeşitli ayarları yapmayı sağlar.

XML dosyasına ait en üst-kök belirlemek için rootName, XML formatının sıkıştırılmış olarak oluşturulması için renderOpts gibi özellikler kullanılabilir.

'use strict';

const fs = require('fs');
const xml2js = require('xml2js');
const builder = new xml2js.Builder({
  rootName: 'kisiler',
  renderOpts: { pretty: false }
});

let kisiler = {
  kisi: [{
    sira: '1',
    adi: 'Yusuf',
    soyadi: 'SEZER'
  }]
};

const xml = builder.buildObject(kisiler);

fs.writeFile('kisiler1.xml', xml, 'utf-8', function (err, data) {

  if (err) throw err;

});

XML formatı genellikle etiket ve etiket içeriğinden oluşmaktadır.

Ancak etiket özellikleri ve DTD gibi özel eklemeler için JSON formatına ve builder nesnesine çeşitli eklemelerin yapılması gerekir.

let kisiler = {
  kisi: [{
    sira: { '_': 1, '$': { 'id': 1 } },
    adi: 'Yusuf',
    soyadi: 'SEZER'
  }]
};

XML formatında dosya oluşturma zorluğu modülden modüle değişiklik göstermektedir.

Node.js XML Okuma

XML verileri platformlar arasında taşımak için oluşturulmuş bir standarttır.

Oluşturulan XML dosyaları ayrıştırıcı veya parser denilen yapı sayesinde anlamlı hale getirilir.

XML okuma işlemi için XML Nedir? yazısındaki XML yapısını kullanalım.

<?xml version="1.0" encoding="UTF-8"?>
<kisiler>
  <kisi>
    <sira>1</sira>
    <adi>Yusuf</adi>
    <soyadi>SEZER</soyadi>
  </kisi>
  <kisi>
    <sira>2</sira>
    <adi>Ramazan</adi>
    <soyadi>SEZER</soyadi>
  </kisi>
  <kisi>
    <sira>3</sira>
    <adi>Sinan</adi>
    <soyadi>SEZER</soyadi>
  </kisi>
  <kisi>
    <sira>4</sira>
    <adi>Mehmet</adi>
    <soyadi>SEZER</soyadi>
  </kisi>
</kisiler>

Node.js fs modülünü kullanarak kisiler.xml isimli XML dosyasını okuyalım.

'use strict';

const fs = require('fs');

fs.readFile('kisiler.xml', 'utf-8', function (err, data) {

  if (err) throw err;

  console.log(data);

});

XML dosyasını anlamlı hale getirmek için sax, xml-js vb. modüller kullanılabilir.

XML dosyasını hem okumak hem de yazmak için sax ile xmlbuilder modüllerini kullanarak oluşturulmuş olan xml2js eklentisi de kullanılabilir.

Modül temel olarak XML formatını JSON formatına çevirerek XML dosyası içeriğine JSON nesnesi olarak erişmeyi sağlar.

XML dosyalarını anlamlı hale getirmek için xml2js modülü içindeki parser nesnesine ait metotlar kullanılır.

'use strict';

const fs = require('fs');
const xml2js = require('xml2js');
const parser = xml2js.Parser();

fs.readFile('kisiler.xml', 'utf-8', function (err, data) {

  if (err) throw err;

  parser.parseString(data, function (err, result) {

    console.log(result);

  });

});

XML ayrıştırma işleminden sonra XML dosyası JSON formatına dönüştürülür.

Örnekteki ilk elemanın adına ve soyadına ulaşalım.

'use strict';

const fs = require('fs');
const xml2js = require('xml2js');
const parser = xml2js.Parser();

fs.readFile('kisiler.xml', 'utf-8', function (err, data) {

  if (err) throw err;

  parser.parseString(data, function (err, result) {

    let adi = result.kisiler.kisi[0].adi.toString();
    let soyAdi = result.kisiler.kisi[0].soyadi.toString();

    console.log(adi + ' ' + soyAdi);

  });

});

XML formatından JSON formatına dönüştürülen JSON değişkeni üzerinde parse, stringify, döngü .vb işlemlerde yapılabilir.

Node.js Derslerine buradan ulaşabilirsiniz…

Hayırlı günler dilerim.

Yusuf SEZER

Yusuf SEZER

Computer Engineer who interested about web technologies, algorithms, artificial intelligence and embedded systems; constantly exploring new technologies.


Bunlara'da bakmalısın!