JDOM Schema überprüfen

Moin!
Nutze einfach den SAXBuilder und rufe "setValidation(true)" bzw. den entsprechenden Konstruktor "new SAXBuilder(true)"


*grüssle*
MeinerEiner
 
danke für die schnelle Antwort.

Die Fehlermeldung

Document is invalid: no grammar found.

bedeutet jetzt wohl, dass er keine Schemadatei gefunden hat obwohl ich die aber im xmlpfad angegeben habe, weiß aber net genau ob das so richtig ist vonwegen syntax hab das hauptsächlich aus einem tutorial übernommen:
Code:
<?xml version="1.0"?>
<root>
xmlns="http://www.w3schools.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="autocreatedxmlFile1183364253441.xsd"

Das autocreatedxmlFile1183364253441.xsd liegt im selben Pfad wie die XML datei. Kann mir jemand sagen wo der Fehler liegt?
 
Probiers mal mit einer file URL für das Schema.:
z.B:xsi:schemaLocation="file:/C:/autocreatedxmlFile1183364253441.xsd"

*grüssle*
MeinerEiner
 
bringt leider dasselbe Ergebnis.

edit:Hier mal meine xsd datei vielleicht liegt es ja daran und ich übersehe etwas:

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.w3schools.com"
xmlns="http://www.w3schools.com"
elementFormDefault="qualified">
<xs:element name="Format">
<xs:complexType>
<xs:sequence>
<xs:element name="OID" type="sx:ID" maxOccurs="1" minOccurs="1"/>
<xs:element name="Extension" type="sx:string" minOccurs="1"/>
<xs:element name="Mimetype" type="sx:string" maxOccurs="1" minOccurs="1"/>
<xs:element name="Category" type="sx:string" default="others" minOccurs="1"/>
<xs:element name="ExtractSize" type="sx:integer" maxOccurs="1" minOccurs="0"/>
<xs:element name="Case" type="sx:boolean" maxOccurs="1" minOccurs="1"/>
<xs:element name="Description" type="sx:string" minOccurs="0"/>
<xs:element name="Segment" minOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:attribute name="Value" type="sx:string" maxOccurs="1" minOccurs="1"/>
<xs:attribute name="Offset" type="sx:integer" maxOccurs="1" minOccurs="1"/>
<xs:attribute name="Action" type="sx:string" maxOccurs="1" minOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
 
Zuletzt bearbeitet:
Ups, unter Windows muss es glaub ich
Code:
file:///C:/datei.xsd
heißen.

Was mir sonst noch einfiele, wäre die Schema Validierung explizit als Feature zu setzen:
Code:
 SAXBuilder saxBuilder = new  SAXBuilder ("org.apache.xerces.parsers.SAXParser", true);
saxBuilder.setFeature ("http://xml.org/sax/features/validation", true);
saxBuilder.setFeature ("http://apache.org/xml/features/validation/schema", true);
saxBuilder.setFeature ("http://apache.org/xml/features/validation/schema-full-checking", true);
*grüssle*
MeinerEiner
 
org.jdom.JDOMException: Could not load org.apache.xerces.parsers.SAXParser: SAX2 driver class org.apache.xerces.parsers.SAXParser not found: org.apache.xerces.parsers.SAXParser

scheint als müsste ich das noch irgendwo runterladen, ich benutze bisher ja JDOM. Werde gleich mal nach dem Paket suchen.:google:
 
org.apache.xerces.parsers.SAXParser sxbuild = new org.apache.xerces.parsers.SAXParser("org.apache.xerces.parsers.SAXParser", true);

So das jar hab ich jetzt eingebunden nur sagt er mir dass dieser konstruktor undefiniert wäre.
 
org.apache.xerces.parsers.SAXParser sxbuild = new org.apache.xerces.parsers.SAXParser("org.apache.xerces.parsers.SAXParser", true);

So das jar hab ich jetzt eingebunden nur sagt er mir dass dieser konstruktor undefiniert wäre.
Den Parser musst du noch imho gar nicht explizit erstellen. Es reicht, wenn du den Parser Namen beim erstellen deines SAXBuilders angibst:
Code:
SAXBuilder saxBuilder = new  SAXBuilder ("org.apache.xerces.parsers.SAXParser", true);

*grüssle*
MeinerEiner
 
ah ok hat geklappt. jetzt meckert er endlich dass er deklarationen nicht findet, das heißt er findet die schema datei.
ich danke dir.
Gruß
Daniel
 
Zurück