İçindekilerGirişİndex
YukarıİlkÖncekiSonraki YokSon
Geriİleri
Yazdır

XML Belgesi Yaratma

Document Yaratma

Java'nın XML API'leri bir XML document'ini parse etmek, yani XML belgesi içerisindeki verilere erişmek için kullanılır. Ancak bazı durumlarda programcının XML belgesini kendisi üretmesi gerekebilir.

DocumentBuilder normalde bir XML kaynağından Document nesnesi üretir. Ancak yeni bir belge üretmek için de newDocument() diye bir method'u bulunur. Bu şekilde üretilen bir document'a yine Document interface'inde bulunan createElement, createAttribute, apppendChild, removeChild ve setAttribute gibi methodlar'la çeşitli eklemeler, çıkarmalar ve değişiklikler yapılabilir. Yaratılan Document nesnesiyle erişim ve dönüştürme gibi işlemler normalde nasıl yapılıyorsa aynen yapıulabilir.

Yaratılan document'in diske veya herhangi bir hedefe kaydedilmesi için Transformer'lar kullanılabilir. Normalde bir transformer, XML'i bir stil (XSL) kullanarak başka bir XML,HTML,Metne v.s.'ye dönüştürmek için kullanılır. Ancak transformer'lar bir style verilmeden newTransformer() method'uyla yaratıldığında bir XML ddocument'ini aynen aktarmak için kullanılabilir.

DomCreateTest.javaİndir Göster Gizle Kopar Satır Gizle Satır Göster
  1 package com.godoro.samples.xml;
  2 import javax.xml.parsers.*;
  3 import javax.xml.transform.*;
  4 import javax.xml.transform.stream.*;
  5 import javax.xml.transform.dom.*;
  6 import org.w3c.dom.*;
  7 import java.io.*;
  8 public class DomCreateTest {
  9   
 10   public static void main(String[] args)
 11     throws Exception
 12   {
 13     DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
 14     DocumentBuilder builder=factory.newDocumentBuilder();
 15     Document doc=builder.newDocument();
 16     Element root=doc.createElement("class");
 17     Attr name=doc.createAttribute("name");
 18     root.setAttribute("name","test");
 19     Element test=doc.createElement("aciklama");
 20     Text text=doc.createTextNode("Sınıf ile ilgili açıklama");
 21     test.appendChild(text);
 22     root.appendChild(test);
 23     doc.appendChild(root);
 24     TransformerFactory transFactory=TransformerFactory.newInstance();
 25     Transformer transformer=transFactory.newTransformer();
 26     DOMSource source=new DOMSource(doc);
 27     String folder="C:\\Godoro\\Projects\\Java\\Education\\JavaBook\\test";
 28     String out=folder+"\\class.xml";
 29     StreamResult output=new StreamResult(out);
 30     transformer.transform(source,output);   
 31   }
 32 }

String'den XML Yaratma

XML metin tabanlı bir yapı olduğu için, Document yaratmadan, düz metin yaratarak da XML üretilebilir. Yapılması gereken bir string nesnesi yaratıp içerisine XML elemanlarını yine string olarak eklemekten ibarettir. XML kaynakları normalde string kabul etmez, URL, Reader veya Writer isterler. Ancak java.io paketinde StringReader ve StringWriter adlı, bir string'in bir akım gibi kullanılmasının sağlayan class'lar vardır. Yani FileReader'la dosyadan okumak yerine StringReader'la string'den okumak yeterlidir. XML'le yapılan erişim ve dönüştürme gibi işlemler string'den yaratılan bu XML belgesiyle yapılabilir. Herhangi bir şekilde string'den üretilen XML'in diske yazılması gerekiyorsa, style almayan transformer kullanılır.

StringXmlTest.javaİndir Göster Gizle Kopar Satır Gizle Satır Göster
  1 package com.godoro.samples.xml;
  2 import javax.xml.transform.*;
  3 import javax.xml.transform.stream.*;
  4 import java.io.*;
  5 public class StringXmlTest {
  6   
  7   public static void main(String[] args)
  8     throws Exception
  9   {
 10     String folder="C:\\Godoro\\Projects\\Java\\Education\\JavaBook\\test";    
 11   
 12     String string="<class><name>test</name></class>";
 13     TransformerFactory transFactory=TransformerFactory.newInstance();
 14     Transformer transformer=transFactory.newTransformer();
 15     String out=folder+"\\string.xml";
 16     StreamResult output=new StreamResult(out);        
 17     Reader reader=new StringReader(string);
 18     StreamSource source=new StreamSource(reader); 
 19     transformer.transform(source,output);    
 20   }
 21   
 22 }

Dosya Listesi

İçindekilerGirişİndex
YukarıİlkÖncekiSonraki YokSon
Geriİleri
Yazdır