Jul292011

xml dosyasının doğrulunu test etmek.

Published by admin at 12:34 AM under

Eğer önemli bir işlem için bir xml dosyası üretiyorsanız bir çok şeyi kontrol etmeniz gerekir. Bazen elinizde olmayan sebeplerden
XML dosyası yanlış üretilir ve bunu siz fark etmezseniz dosyayı alan kurumdan size hata dönüşü olur.
Bu yapılan işleme göre bazen çok can sıkıcı durumlara sebep olabilir, hatta yaptığınız işin ciddiyetine göre size maddi ceza bile kesilebilir.
Mesela banların Maliyeye vs... ürettiği bir sürü  XML rapor, E-Haciz tarzi işlemler oluyor.
Bunların hepsi XML dosyası formatında gidip gelmekte ve çok sıkı bir denetimden geçmektedir. Belirtilen formatın dışına çıkmamanız gerekir.

Böyle bir durumda aslında yapmanız gereken çok basit bir işlem vardır, o da XML dosyasını göndermeden önce dosyanın doğruluğunu kontrol etmektir.
Bunu gözle yapmak yerine bir sürü program ile yapabilirsiniz. Yada siz kendini programınıza ufak bir modül ekleyerek XML dosyasının şemasından faydalanarak
Dosyanın doğruluğunu kontrol edebilirisiniz.

Javada da bunu yapabileceğiniz ufak bir kodu aşağıda bulabilirsiniz.
Benim yaptığım mehod da xml dosya adını ve şemasnını parametre olarak veriyorsunuz. O da size bunun geçerli olup olmadığını bildiriyor.
Projenizde böyle basit bir kontrol ile hataları müşteriye gitmeden ilk siz fark edebilirsiniz.

 

import java.io.*;
import javax.xml.transform.Source;
import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.*;
import org.xml.sax.SAXException;

    private void XmlValidation(String xmlFileName,String xsdFileName){
        Schema schema=null;
                // 1. Lookup a factory for the W3C XML Schema language
            SchemaFactory factory =
                SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema");
           
            // 2. Compile the schema.
            // Here the schema is loaded from a java.io.File, but you could use
            // a java.net.URL or a javax.xml.transform.Source instead.
            File schemaLocation = new File(xsdFileName);
           
            try {
                schema = factory.newSchema(schemaLocation);
            } catch (SAXException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            // 3. Get a validator from the schema.
            Validator validator = schema.newValidator();
            // 4. Parse the document you want to check.
            Source source = new StreamSource(xmlFileName);
            // 5. Check the document
            try
            {
                try {
                    validator.validate(source);
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                System.out.println(xmlFileName + " is valid.");
            }
            catch (SAXException ex) {
                System.out.println(xmlFileName + " is not valid because ");
                System.out.println(ex.getMessage());
            } 
       
    }

 

 

kaynak : http://www.ibm.com/developerworks/xml/library/x-javaxmlvalidapi/index.html



[KickIt] [Dzone] [Digg] [Reddit] [del.icio.us] [Facebook] [Technorati] [Google] [StumbleUpon]

Tags: ,

E-mail | Permalink | Trackback | Post RSSRSS comment feed 0 Responses