Hallo,
bin total verwirrt. Ich weiß, dass das Thema schon hundert Mal gefragt wurde, aber ich habe immernoch keinen Durchblick.
Also zu meinem Problem: Ich habe ein XML-Schema, das wie folgt aussehen könnte (habs mal gekürzt):
So, um ein XML-File mit solch einem Schema zu erstellen habe ich per Hand mit dem SaxBuilder folgendes geschrieben:
Funktioniert ja auch soweit. ABER: Er beachtet bei der Art und Weise überhaupt nicht, ob es nach dem Schema C:\\temp\\res.xsd geht.
Meine Frage also: Wie muss ich den Quellcode verändern, dass er mir ne Fehlermeldung bringt, wenn ich ein XML-Dokument erstellen will, dass nicht nach dem Scheme aufgebaut ist?
Vielen Dank schon VOrher
bin total verwirrt. Ich weiß, dass das Thema schon hundert Mal gefragt wurde, aber ich habe immernoch keinen Durchblick.
Also zu meinem Problem: Ich habe ein XML-Schema, das wie folgt aussehen könnte (habs mal gekürzt):
Code:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="CREATE">
<xs:complexType>
<xs:sequence>
<xs:element name="NUMMER">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="15"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="FEHLER">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="fehlercode" type="xs:int"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Code:
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-schemaLocation","C:\\temp\\res.xsd");
rootElement = new Element("CREATE");
Element myElement = new Element("NUMMER");
myElement = myElement.addContent("12");
rootElement.addContent(myElement);
Element myElement2 = new Element("FEHLER");
myElement2.addContent("error");
myElement2.setAttribute("fehlercode", "1");
rootElement.addContent(myElement2);
doc = new Document();
doc.setRootElement(rootElement);
PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(file)));
org.jdom.output.Format format = org.jdom.output.Format.getPrettyFormat();
new XMLOutputter(format).output(doc, out);
out.close();
Funktioniert ja auch soweit. ABER: Er beachtet bei der Art und Weise überhaupt nicht, ob es nach dem Schema C:\\temp\\res.xsd geht.
Meine Frage also: Wie muss ich den Quellcode verändern, dass er mir ne Fehlermeldung bringt, wenn ich ein XML-Dokument erstellen will, dass nicht nach dem Scheme aufgebaut ist?
Vielen Dank schon VOrher