# XML-Datei gegen xsd prüfen!



## schlaubie (16. Jun 2005)

Hallo Leute mit welchen Klassen kann man den eine XML Datei gegen ein Xml-Svhema testen (parsen)?
Kleines Beispiel wäre nett!
 Besten Dank im vorraus!


----------



## Roar (16. Jun 2005)

das was du suchst ist wohl DocumentBuilder bzw SAXParserFactory#setSchema(Schema)


----------



## Bleiglanz (16. Jun 2005)

jwsdp downloaden

sind schöne beispiele unter den examples

im übrigen get das bei einigen Parsern neuerer bauart sowieso automatisch (setValidating(true)); die unterscheiden gar nicht ob jetzt gegen eine DTD oder ein Schema validiert wird


----------



## schlaubie (20. Jun 2005)

Danke ersmal für die schnellen Antworten! Es funktioniert auch schon ganz gut! 
Wenn eine XML datei nicht ganz dem Schema entspricht,soll eine detailierte Fehlermeldung geworfen werden etwa wie auf!

http://tools.decisionsoft.com/schemaValidate.html

Welcher Parser kann das ? Dom? SAX? JDOm? Wie kann man es abfangen?


----------



## schlaubie (20. Jun 2005)

Hab gefunden wie es geht einfach im Catch-Block die Methode getMessage auffrufen diese enthält die Fehlerbeschreibung

```
try 
          {
              SAXBuilder builder = new SAXBuilder("org.apache.xerces.parsers.SAXParser", true ); // Überprüft die Wohlgeformtheit
              builder.setFeature("http://apache.org/xml/features/validation/schema", true ); // Aktiviere Schema-Validation
              builder.setProperty("http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation", xsdFile.toURL().toString()); // Übergebe den Pfad zur Schema-Datei
              xmlDocument = builder.build(datei);
          }
          catch(JDOMParseException e)
          {
              System.out.println("Fehler beim Parsen der XML-Datei bei Zeile " + e.getLineNumber() +" Mit folgender Beschreibung " + e.getMessage());
          }
          catch(IOException e)
          {
           System.out.println("Fehler beim einlesen der Datei "+ datei + "Mit folgender Beschreibung " + e.getMessage());   
          }
          catch(JDOMException a )
          {
              System.out.println("Eine allgemeine JDOMException ist aufgetreten" + a.getLocalizedMessage() + a.getClass() +a.getStackTrace());  
          }
```


----------



## KSG9|sebastian (21. Jun 2005)

wenn du das thema abgehackt hättest wärst ein ein "Bilderbuchuser"

- Frage gestellt
- Lösung selbst erarbeitet
- WICHTIG: Lösung gepostet

n1


----------

