schlachtrufe
Grünschnabel
Hallo,
ich würde gern die Korrektheit einer XML-Datei mittels einer Schema-Datei prüfen. Zum Einlesen der XML-Datei benutze ich DOM.
Meine XML Datei:
Die Schema-Datei:
Die Programme "XML-Spy" und "XML Copy Editor" sagen beide, dass die XML Datei valide ist, nur mein Programm scheitn das nicht zu merken.
Fehlerausgabe beim Öffnen der XML Datei in meinem Java-Programm:
"org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the declaration of element 'Beschreibung'."
Mein Java-Code zum Einlesen und Überprüfen einer XML-Datei:
Ich hab keine Ahnung wo mein Fehler liegt...
ich würde gern die Korrektheit einer XML-Datei mittels einer Schema-Datei prüfen. Zum Einlesen der XML-Datei benutze ich DOM.
Meine XML Datei:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<Beschreibung
xmlns="http://www.person.de"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.person.de mySchema.xsd">
<Vater name="Peter" alter="40">
<Kind name="Ralf" alter="10"/>
<Kind name="Markus" alter="15"/>
</Vater>
</Beschreibung>
Die Schema-Datei:
Code:
<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.person.de"
xmlns="http://www.person.de">
<xs:element name="Beschreibung">
<xs:complexType>
<xs:sequence>
<xs:element ref="Vater" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Vater">
<xs:complexType>
<xs:sequence>
<xs:element ref="Kind" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="required" />
<xs:attribute name="alter" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="Kind">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required" />
<xs:attribute name="alter" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
</xs:schema>
Die Programme "XML-Spy" und "XML Copy Editor" sagen beide, dass die XML Datei valide ist, nur mein Programm scheitn das nicht zu merken.
Fehlerausgabe beim Öffnen der XML Datei in meinem Java-Programm:
"org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the declaration of element 'Beschreibung'."
Mein Java-Code zum Einlesen und Überprüfen einer XML-Datei:
Code:
try {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
doc = db.parse(file);
//Validierung gegen Schema
SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
File schemata = new File("mySchema.xsd");
Schema f = sf.newSchema(schemata);
Validator v = f.newValidator();
v.validate(new DOMSource(doc.getDocumentElement()));
}
catch (SAXParseException e) {
e.printStackTrace();
}
Ich hab keine Ahnung wo mein Fehler liegt...