-- java

Java :: XML Dosyası Oluşturma

Java’da XML dosyası oluşturmam gerektiğinde bulduğum kodu, başkalarının da işine yarar umuduyla buraya da yazayım.
Amaç şu aşağıdaki formatta bir XML dosyası oluşturmak:

<sirket>
	<calisan id="1">
		<ad>İsim</ad>
		<soyAd>SOYİSİM</soyAd>
		<maas>1000</maas>
	</calisan>
	<calisan id="2">
		<ad>İsim2</ad>
		<soyAd>SOYİSİM2</soyAd>
		<maas>1000</maas>
	</calisan>
</sirket>

Kodun orijinali üzerinde fazla değişiklik yapmadan aşağıdaki haliyle inceleyelim:

import java.io.File;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Attr;
import org.w3c.dom.Document;
import org.w3c.dom.Element;

public class CreateXML {
	public static void main(String[] args) {
		try {
			/**
			 * Kodun kaynağı:
			 * http://www.mkyong.com/java/how-to-create-xml-file-in-java-dom/
			 */
			DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
			DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
			
			/** Şirket */
			Document doc = docBuilder.newDocument();
			Element rootElement = doc.createElement("sirket");
			doc.appendChild(rootElement);
			
			/** Çalışan */
			Element staff = doc.createElement("calisan");
			rootElement.appendChild(staff);
			
			/** Çalışana id özelliği atama */
			Attr attr = doc.createAttribute("id");
			attr.setValue("1");
			staff.setAttributeNode(attr);
			
			/** Şöyle bir de kısayolu var */
			// staff.setAttribute("id", "1");
			
			/** Ad */
			Element firstname = doc.createElement("ad");
			firstname.appendChild(doc.createTextNode("İsim"));
			staff.appendChild(firstname);
			
			/** Soyad */
			Element lastname = doc.createElement("soyAd");
			lastname.appendChild(doc.createTextNode("SOYİSİM"));
			staff.appendChild(lastname);
			
			/** Maaş */
			Element salary = doc.createElement("maas");
			salary.appendChild(doc.createTextNode("1000"));
			staff.appendChild(salary);
			
			/** İçeriğin bir XML dosyasına yazılması */
			TransformerFactory transformerFactory = TransformerFactory.newInstance();
			Transformer transformer = transformerFactory.newTransformer();
			DOMSource source = new DOMSource(doc);
			StreamResult result = new StreamResult(new File("file.xml"));
	 
			transformer.transform(source, result);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

Eğer hatasız çalışırsa proje klasörü içinde “file.xml” adında bir dosya oluşacaktır. İçeriği de aşağıdaki gibi:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<sirket>
	<calisan id="1">
		<ad>İsim</ad>
		<soyAd>SOYİSİM</soyAd>
		<maas>1000</maas>
	</calisan>
</sirket>

Fazla açıklama da yazmadık ama adamlar zaten güzel yazmışlar, açıklama yazmaya pek gerek kalmamış.
Kaynak: mkyong.com

Yorum yazın

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.

  1. hocam paylaşımlarınız için teşekkürler benim aklıma birşey takıldı şimdi oluşturduğumuz bu xml dosyası ile rapor’lar oluşturabilirmiyiz?

  2. Tabi ki oluşturulabilir, neden olmasın? Şu aşağıdaki gibi bir şey geldi aklıma, herhalde ona benzer bir yapıdan bahsediyoruz..

    <sirket>
      <elemanlar>
        <eleman>
          <tcKimlikNo>...</tcKimlikNo>
          <ad>...</ad>
          <soyAd>...</soyAd>
          <departman>.....</departman>
          <maas>...</maas>
        </eleman>
        <eleman>
          <tcKimlikNo>...</tcKimlikNo>
          <ad>...</ad>
          <soyAd>...</soyAd>
          <departman>.....</departman>
          <maas>...</maas>
        </eleman>
        ......
        ......
        ......
      </elemanlar>
    </sirket>
    
  3. elinize sağlık güzel bir yazı ben bunu jsp projemde kullanıyorum mesela bi kez bu xml oluşturdum ama sonra formdan tekrar aynı xml e eleman eklemek istiyorum bunu nasıl yapabilirim ?

  4. @Elif
    Var olan XML’i okuyup, Element’ler olarak alıp, yeni node’ları da var olanın üzerine ekleme şeklinde bir yöntem izlenebilir.

  5. paylaşım için teşekkürler, burada çalışanın id si kendi birer birer artırarak ve maaşını random sayılardan üreterek nasıl oluşturabiliriz ? yani her seferinde kendimiz yazmak yerine bir döngü ile atayabilir miyiz ? maaş kısmında kullanılan createTextNode ‘a döngü aracılıgıyla nasıl integer değer atayabiliriz?

  6. Hocam saygılar, ben android ile xml bir url adresine yazmak istiyorum onu nasıl yapabilir.

  7. Ben projeme xml ekledim ama şimdi jar haline getirdim ama netbeans te normal bir şekilde çalışan uygulama jar olunca xml bulamadı diye hata veriyor