Node.js XML Oluşturma

Yazıda Node.js ile XML dosyası oluşturmak için gerekli olan modül ve kullanımı ile ilgili bilgiler yer almaktadır.

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 ve 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ü indirmek için

npm install xml2js

komutu veya

npm install xml2js --save

komutu kullanılır.

Modül projeye

const xml2js = require("xml2js");

komutu ile dahil edilir.

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 yapısını XML Nedir? yazısında örnek yapıyı JSON formatında oluşturalım.

let kisiler = {
  kisi: [{
    sira: "1",
    adi: "Yusuf Sefa",
    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ç Node.js 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 Sefa",
    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ı yapmamıza olanak 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 vb. ö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 Sefa",
    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 Sefa",
    soyadi: "SEZER"
  }]
};

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

Uygun modülü bulmak için NPM içerisindeki modülleri aramak ve dokümantasyonu okumak faydalı olacaktır.

Node.js Derslerine buradan ulaşabilirsiniz…

Hayırlı günler dilerim.

Bunlar da hoşunuza gidebilir...

7 Cevaplar

  1. Mert dedi ki:

    Merhaba, Belki de alakasız bir konuda yardım istiyorum ama son konu bu olduğundan buraya yazmak istedim…

    Öncelikle, Node js kurulumunu başarıyla tamamladım. cmd den localhost atadım.
    http://127.0.0.1:1337 adresinden çıktı aldım.

    Şimdi benim node js alt tabanlı bir scriptim var fakat bunu localhost’ta çalıştıramadım.
    localhost’ta çalıştırmam için ne yapmam gerekiyor.

    http://localhost/yusuf/ olarak site açılıyor ama node js etkisiz zira tam olarak çalışmıyor.
    yardımcı olabilir misiniz?

    • Yusuf SEZER dedi ki:

      Port numarasını 1337 yerine 80 olarak ayarlamanız yeterli olacaktır. Ancak sisteminizde portu 80 olan Apache, IIS, nginx vb. yazılım varsa devre dışı bırakmanız faydalı olacaktır.

  2. Mert dedi ki:

    İlginiz ve cevabınız için teşekkürler.

    Appserv kurulu sistemimde, 80 portonu devre dışı bırakırsam appserv çalışmayı durdurmayacak mı? durdurursa da haliyle php dosyalarını çalıştıramayacağım.

    • Yusuf SEZER dedi ki:

      Doğrudur.
      Böyle bir durumda maalesef Appserv’i geçici olarak devre dışı bırakmanız / durdurmanız gerekecek.
      Alternatif olarak Appserv ayarlarında değişiklik yaparak localhost yerine http://projem.dev gibi yapabilirsiniz ( virtual host ile).
      Ancak alışkanlıklar kolay değişmeyeceğinden ve değiştirmek zahmetli olacağından Node.js çalıştırırken Appserver’i durdurmak daha kolay olacaktır.
      Başka bir alternatif olarak hem PHP hem de Node.js çalıştırmaya imkan veren Laragon yazılımını kullanabilirsiniz.

      • Mert dedi ki:

        Çok teşekkür ederim, Çok yardımcı oldunuz…

        Laragon’u kuruyorum hemen…

        Yardım gerekirse tekrar yazabilir miyim?

        • Yusuf SEZER dedi ki:

          Tabii ki ayrıca sitede bulunan yazıları daha fazla kişinin faydalanması için paylaşırsanız sevinirim.

  3. Mert dedi ki:

    Çok teşekkür ederim, Laragon’u deneyeyim…

    Çok yardımcı oldunuz, tekrar tekrar teşekkür ederim.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir