# XML mit externem XSD validieren



## despairedNoob (3. Feb 2006)

hi community,

ich hab vor, eine XML-datei im java gegen ein Schema zu validieren.
soweit klappt es auch, aber dann kommt die komische warnung, mit der ich nix anzufangen weiß


```
[Warning] :1:1: [url]http://www.w3.org/TR/xml-schema-1#SchemaLocation?java.io.FileInputStream@171732b[/url]
```

kann mir wer beraten, was das zu heißen hat?

mfg dNoob


----------



## despairedNoob (3. Feb 2006)

kann mir vielleich jemand hier ein klassendiagramm oder ähnliches geben, wo die zusammenhänge der verschiedenstent stream-klassen dargestellt ist?

weil java und streams ist wie also würde man nach der nadel im heuhaufen suchen.. voll unübersichtlich gemacht


----------



## SamHotte (3. Feb 2006)

Geben kann ich's dir leider nicht, hab es nicht digital. Aber im Buch "Core Java" von Horstmann/Cornell ist eine schöne Übersichtsgrafik ... vielleicht findest du die ja irgendwie online.


----------



## byte (3. Feb 2006)

Ein paar mehr Informationen wären nicht verkehrt. Welchen Parser benutzt Du zum Validieren? Code?


----------



## despairedNoob (13. Feb 2006)

ich nutze folgenden Parser: org.apache.xerces.parsers.SAXParser

also ich muss die XML-Datei und das Schema als InputStream-Objekte dem parser übergeben, und der soll dann gleich mit validieren... und dann kommt eben die Fehlermeldung.

mach ich da irgendwas falsch?

mfg dNoob


----------



## Guest (13. Feb 2006)

Hi,

also ich kann dir zwar nicht mit der fehlermeldung helfen, aber vielleicht bringt dir eine andere Lösung was.
Hier ist meine, und ich glaube, alle Klassen sind in Java 1.5 mit drin.


```
public boolean validate(String xsd, File file)
        {
            try
            { 
                SchemaFactory schemaFactory = SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema");
                Source schemaSource =  new StreamSource(new File(xsd));
                Schema schema= schemaFactory.newSchema(schemaSource); 
                Validator validator = schema.newValidator();
                validator.validate(new StreamSource(file));
                return true;
            }
            catch (Exception e)
            {
                System.err.println("Fehler beim Validieren");
                return false;
            }
        }
```

file ist das xml-File, was validiert werden soll. Und xsd ist die URL zum Schema. (C:\\Temp\\MeinSchema.xsd).
vielleicht hilfts ja....


----------



## Guest (13. Feb 2006)

naja, das mit den File's hab ich auch schon in die reihe gekriegt, aber statt den File's würde ich gern InputStream's nutzen ;-)

im klartext:

statt:

```
public boolean validate(String xsd, File file)
```

hatte ich gern:

```
public boolean validate(InputStream xsd,InputStream file)
```

...und bei der ganzen InputStream-Casterei tauchen bei mir ein paar Unklarheiten auf...

mfG dNoob[/code][/quote]


----------



## Gast (13. Feb 2006)

öhm, dann einfach 

```
validator.validate(new StreamSource(myInputStream));
```


----------



## despairedNoob (13. Feb 2006)

jo... so einfach gehts ^^

danke für eure mühe


----------

