🧩 Java XML Parser Rehberi: XML Verilerini Okuma, Yazma ve Düzenleme
🧠 Bu Rehberde Ne Öğreneceksiniz?
Bu rehberde, Java'da XML ayrıştırıcılarının (parser) nasıl çalıştığını öğreneceksiniz.
DOM, SAX, StAX ve JAXB gibi en yaygın yöntemleri karşılaştırarak XML verilerini okuma, yazma ve düzenleme işlemlerini uygulamalı öğreneceksiniz.
🧩 1. XML Parser Nedir?
XML (eXtensible Markup Language), verilerin taşınması ve saklanması için kullanılan esnek bir biçimdir.
Java, XML dosyalarını işlemek için farklı API’ler sunar:
- DOM Parser (Document Object Model)
- SAX Parser (Simple API for XML)
- StAX Parser (Streaming API for XML)
- JAXB (Java Architecture for XML Binding)
Ek olarak, JDOM ve JiBX gibi alternatif kütüphaneler de mevcuttur.
📘 2. DOM Parser (Document Object Model)
DOM Parser, XML dosyasını tamamen belleğe yükler ve düğümler (nodes) üzerinden gezmenize olanak sağlar.
Küçük dosyalar için idealdir, ancak büyük dosyalarda yavaşlayabilir.
Çalışma Prensibi:
Tüm XML dosyasını hafızaya alır, ağaç yapısı oluşturur ve bu yapı üzerinden işlem yapılır.
Örnek kullanım:
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse("data.xml");
➡️ Bu kod XML dosyasını belleğe yükleyip işlemeye hazır hale getirir.
Avantaj: Basit ve anlaşılır yapı. Dezavantaj: Büyük dosyalarda fazla bellek kullanır.
⚡ 3. SAX Parser (Simple API for XML)
SAX Parser, XML verisini olay tabanlı (event-based) olarak işler. XML dosyasını sırayla okur, belleğe tamamen yüklemez — bu da onu büyük dosyalar için ideal hale getirir.
Çalışma Prensibi: Etiketler (tag) okundukça olaylar tetiklenir (örneğin startElement, endElement).
Örnek kullanım:
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser parser = factory.newSAXParser();
parser.parse("data.xml", new MyHandler());
➡️ Bu komut, XML verisini olay tabanlı olarak işler.
Avantaj: Büyük dosyalarda hızlı ve verimlidir. Dezavantaj: XML yapısını rastgele gezmek zordur.
🚀 4. StAX Parser (Streaming API for XML)
StAX, XML'i akış (stream) olarak işler. İki modda kullanılabilir:
Cursor API (XMLStreamReader)
Iterator API (XMLEventReader)
Çalışma Prensibi: Veri akışı sırayla okunur, gerektiğinde durdurulup devam edilebilir. Bu sayede hem hafif hem de kontrol edilebilir bir işleme sağlar.
Örnek:
XMLInputFactory factory = XMLInputFactory.newInstance();
XMLEventReader reader = factory.createXMLEventReader(new FileInputStream("data.xml"));
➡️ XML verisi satır satır okunur, bellek dostudur.
🧱 5. JAXB (Java Architecture for XML Binding)
JAXB, Java nesneleri ile XML verileri arasında çift yönlü dönüşüm sağlar. Annotation (dipnot) tabanlı çalışır ve XML’i Java nesnesine (unmarshalling) veya Java nesnesini XML’e (marshalling) dönüştürür.
Örnek:
JAXBContext context = JAXBContext.newInstance(User.class);
Marshaller marshaller = context.createMarshaller();
marshaller.marshal(user, new File("user.xml"));
➡️ Bu örnek, User nesnesini XML dosyasına çevirir.
Avantaj: Kod yazımını kolaylaştırır, nesne odaklı projelere uygundur. Dezavantaj: Karmaşık XML yapılarında ek ayarlar gerekebilir.
🧰 6. Ek XML İşlemleri
XPath: XML içindeki belirli öğeleri sorgulamak için kullanılır.
XPath xPath = XPathFactory.newInstance().newXPath();
String expr = "/students/student[@id='101']/name";
➡️ Bu sorgu, id=101 olan öğrencinin adını döndürür.
XML Doğrulama (Validation): javax.xml.validation.Validator sınıfı kullanılarak XML’in XSD’ye uygunluğu kontrol edilir.
XSD'den XML Üretme: Eclipse gibi araçlarla XSD dosyalarından örnek XML oluşturulabilir.
SOAP XML: XML tabanlı web servis iletişim protokolüdür (Simple Object Access Protocol).
❓ Sıkça Sorulan Sorular (SSS)
- DOM ve SAX arasındaki fark nedir?
DOM tüm dosyayı belleğe yükler; SAX ise veriyi sıralı olarak okur ve daha az bellek kullanır.
- JAXB’nin avantajı nedir?
Java nesnelerini XML’e ve XML’i nesneye dönüştürmeyi basitleştirir, annotation desteklidir.
- StAX neden iki API sunar?
Cursor API daha hızlı ve düşük seviye; Iterator API ise olay tabanlı ve daha okunabilir yapıdadır.
- Büyük XML dosyaları için hangi parser uygun?
SAX veya StAX kullanmak performans açısından daha verimlidir.
- XML verileri düzenlenebilir mi?
Evet. DOM veya JDOM kullanarak öğeleri ekleyip, kaldırıp veya düzenleyebilirsiniz.
🎯 Sonuç
Bu rehberde, Java'da XML işleme için kullanılan başlıca yöntemleri (DOM, SAX, StAX, JAXB) öğrendiniz. Artık XML verilerini projelerinizde rahatlıkla okuyabilir, yazabilir ve dönüştürebilirsiniz.
💬 Rabisu Bulut altyapısında Java uygulamalarınızı hemen deneyin ve XML işlemlerini bulut üzerinde kolayca yönetin!