Hi,
ich gestehe, dass ich bei XML und besonders bei XML mit Java ein kompletter Anfaenger bin, aber ich habe es zumindest
hinbekommen ein Servlet zu schreiben, dass mein XML erzeugt und dann an mein HTML verschickt...
Mein Problem ist jetzt, dass beim Erzeugen aber das XML nicht nach meiner DTD validiert wird. Wenn ich also ein
falsche Element <WRONG_ELEMENT> in mein XML einfuege, sollte ich eigentlich eine DOMException bekommen, aber
das XML wird einfach erzeugt, als ob alles okay waere. Hier ist mein Code:
Erzeugtes XML vom Java-Code (siehe unten)
Dazugehoerige DTD:
Java-Code:
Erzeugen des Documents (Ich arbeite mit dem package org.w3c.com.*)
Hinzufuegen eines neuen (hier falschen) Elements
Ausgabe des XML-Documents:
Also ich bin fuer jede Hilfe dankbar - und ja, hab auch schon hier im Forum die Suche bemueht, aber nicht das
Richtige gefunden...
Danke schon mal
~B
ich gestehe, dass ich bei XML und besonders bei XML mit Java ein kompletter Anfaenger bin, aber ich habe es zumindest
hinbekommen ein Servlet zu schreiben, dass mein XML erzeugt und dann an mein HTML verschickt...
Mein Problem ist jetzt, dass beim Erzeugen aber das XML nicht nach meiner DTD validiert wird. Wenn ich also ein
falsche Element <WRONG_ELEMENT> in mein XML einfuege, sollte ich eigentlich eine DOMException bekommen, aber
das XML wird einfach erzeugt, als ob alles okay waere. Hier ist mein Code:
Erzeugtes XML vom Java-Code (siehe unten)
Code:
<?xml version="1.0" Encoding="UTF-8"?>
<PERSONS>
<WRONG_ELEMENT>test-value</WRONG_ELEMENT>
</PERSONS>
Dazugehoerige DTD:
Code:
<?xml version="1.0"?>
<!DOCTYPE PERSONS [
<!ELEMENT PERSON (#PCDATA)>
]>
Java-Code:
Erzeugen des Documents (Ich arbeite mit dem package org.w3c.com.*)
Code:
private Document createXMLDocument() {
Document doc = null;
try {
// Find the implementation
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
factory.setValidating(true);
DocumentBuilder builder = factory.newDocumentBuilder();
DOMImplementation impl = builder.getDOMImplementation();
// Create the document
DocumentType cedDocType = impl.createDocumentType(
"PERSONS",
null,
"http://.../person.dtd");
doc = impl.createDocument(null, "PERSONS", cedDocType);
} catch (ParserConfigurationException pce) {
System.out.println("ERROR:ParserConfigurationException caught: " + pce.getMessage());
}
return doc;
}
Hinzufuegen eines neuen (hier falschen) Elements
Code:
private Document addPerson(Document xmlDoc, String personValue) {
try {
Element root = xmlDoc.getDocumentElement();
// create a new Node
Node personNode = xmlDoc.createElement("WRONG_ELEMENT");
root.appendChild(personNode);
Text personValueTxt = xmlDoc.createTextNode(personValue);
personNode.appendChild(personValueTxt);
} catch (Exception e) {
// Ja,ja... Iss' kein guter Stil - wird auch noch geaendert
System.out.println(" *** ERROR *** Exception caught: " + e.getMessage());
}
return xmlDoc;
}
Ausgabe des XML-Documents:
Code:
private void printXmlDocument(Document xmlDoc) {
try {
// Serialize the document onto System.out
TransformerFactory xformFactory = TransformerFactory.newInstance();
Transformer idTransform = xformFactory.newTransformer();
Source input = new DOMSource(xmlDoc);
Result output = new StreamResult(System.out);
idTransform.transform(input, output );
} catch (TransformerConfigurationException tce) {
System.out.println("ERROR:TransformerConfigurationException" + tce.getMessage());
} catch (TransformerException te) {
System.out.println("ERROR:TransformerException" + te.getMessage());
}
}
Also ich bin fuer jede Hilfe dankbar - und ja, hab auch schon hier im Forum die Suche bemueht, aber nicht das
Richtige gefunden...
Danke schon mal
~B