# Schema-Validierung mit JDOM



## heraklit (18. Nov 2009)

Hallo,

zur Zeit bin ich mit folgendem Problem beschäftigt:
In meinem Programm erstelle ich ein JDOM-Document, welches nach der Erstellung validiert und bei erfolgreicher Validierung in einer Datei abgespeichert werden soll.

Leider habe ich es bisher nur geschaft, das Document zu validieren, nachdem es gespeichert wurde.
Mein bisheriger Code sieht etwa folgendermaßen aus:


```
//Zunächst wird das Document-objekt erzeugt
        Document dokument = new Document(wurzel); 
             
        //------------------------------------------------------------------------------------------
        
        //Dann erfolgt die Ausgabe in die Datei
        try
        {
            XMLOutputter ausgabe = new XMLOutputter(Format.getPrettyFormat());

            //Hier erfolgt die Ausgabe in die Datei. 
            //Man könnte die Methode outputString verwenden, um einen String zu erstellen, der gegen das  
            //XML-Schema validiert wird. Im Anschluss könnte man das Ergebnis bei erfolgreicher Validierung 
            //speichern. 
            //Leider weiß ich nicht, wie man den zurückgegebenen String validiert (siehe auch unten)
            ausgabe.output(dokument, new FileOutputStream(file));
        }
        catch(Exception e)
        {
            System.out.println(e);
        }
        
        //------------------------------------------------------------------------------------------        
        
        //Es folgt die Validierung gegen ein XML-Schema
        try
        {        
            File xsdFile = new File("src/analyzer/xml/xmlexport/xmltest.xsd");
            SAXBuilder builder = new SAXBuilder("org.apache.xerces.parsers.SAXParser", true);
            builder.setFeature("http://apache.org/xml/features/validation/schema", true);
            builder.setProperty("http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation", xsdFile.toURI().toString() );                                   

            builder.build(file);          
            
            System.out.println("Successfully parsed and validated");
        }
        catch(Exception cause)
        {
            System.err.println(cause);
        }
```

Habt ihr eine Idee, wie ich das Problem lösen könnte?
Gruß


----------



## heraklit (3. Dez 2009)

> Habt ihr eine Idee, wie ich das Problem lösen könnte?

Scheinbar (mal wieder) nicht?
Sind hier eigentlich nur 12-Jährige Pseudoprogrammierer unterwegs, die sich auf ihr erstes Hello-Universe Programm zu viel einbilden?!


----------



## mvitz (3. Dez 2009)

> How can I perform in-memory validation against a DTD or Schema?
> 
> Currently you can't do this, in JDOM or any other Java document object model API. However, this is something we'd like JDOM to support, and we have a volunteer who's working on it.


JDOM: FAQ

Anscheinend geht das einfach nicht.


----------

